skia2/tests/ErrorTest.cpp
tfarina@chromium.org e4fafb146e Use DEFINE_TESTCLASS_SHORT macro in tests.
The three version of DEFINE_TESTCLASS macro is deprecated and thus just
use the simple, short one.

BUG=None
TEST=out/Debug/tests
R=mtklein@google.com, bsalomon@google.com, robertphillips@google.com

Review URL: https://codereview.chromium.org/100113004

git-svn-id: http://skia.googlecode.com/svn/trunk@12653 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-12-12 21:11:12 +00:00

63 lines
1.7 KiB
C++

/*
* Copyright 2013 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "Test.h"
#include "TestClassDef.h"
#include "SkError.h"
#include "SkPath.h"
#include "SkRect.h"
typedef struct {
skiatest::Reporter *fReporter;
unsigned int *fIntPointer;
} ErrorContext;
#define CHECK(errcode) \
REPORTER_ASSERT( reporter, (err = SkGetLastError()) == errcode); \
if (err != kNoError_SkError) \
{ \
SkClearLastError(); \
}
static void cb(SkError err, void *context) {
ErrorContext *context_ptr = static_cast<ErrorContext *>(context);
REPORTER_ASSERT( context_ptr->fReporter, (*(context_ptr->fIntPointer) == 0xdeadbeef) );
}
DEF_TEST(Error, reporter) {
SkError err;
unsigned int test_value = 0xdeadbeef;
ErrorContext context;
context.fReporter = reporter;
context.fIntPointer = &test_value;
SkSetErrorCallback(cb, &context);
CHECK(kNoError_SkError);
SkRect r = SkRect::MakeWH(50, 100);
CHECK(kNoError_SkError);
SkPath path;
path.addRect(r);
CHECK(kNoError_SkError);
path.addRoundRect(r, 10, 10);
CHECK(kNoError_SkError);
// should trigger the default error callback, which just prints to the screen.
path.addRoundRect(r, -10, -10);
CHECK(kInvalidArgument_SkError);
CHECK(kNoError_SkError);
// should trigger *our* callback.
path.addRoundRect(r, -10, -10);
CHECK(kInvalidArgument_SkError);
CHECK(kNoError_SkError);
}