Index: tests/Sk64Test.cpp |
diff --git a/tests/Sk64Test.cpp b/tests/Sk64Test.cpp |
deleted file mode 100644 |
index d668e5454d69eb75c774a706db60398440353212..0000000000000000000000000000000000000000 |
--- a/tests/Sk64Test.cpp |
+++ /dev/null |
@@ -1,176 +0,0 @@ |
-/* |
- * Copyright 2011 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 "Sk64.h" |
-#include "SkRandom.h" |
-#include <math.h> |
- |
-struct BoolTable { |
- int8_t zero, pos, neg, toBool, sign; |
-}; |
- |
-static void bool_table_test(skiatest::Reporter* reporter, |
- const Sk64& a, const BoolTable& table) |
-{ |
- REPORTER_ASSERT(reporter, a.isZero() != a.nonZero()); |
- |
- REPORTER_ASSERT(reporter, !a.isZero() == !table.zero); |
- REPORTER_ASSERT(reporter, !a.isPos() == !table.pos); |
- REPORTER_ASSERT(reporter, !a.isNeg() == !table.neg); |
- REPORTER_ASSERT(reporter, a.getSign() == table.sign); |
-} |
- |
-void Sk64::UnitTestWithReporter(void* reporterParam) { |
- skiatest::Reporter* reporter = (skiatest::Reporter*)reporterParam; |
- |
- enum BoolTests { |
- kZero_BoolTest, |
- kPos_BoolTest, |
- kNeg_BoolTest |
- }; |
- static const BoolTable gBoolTable[] = { |
- { 1, 0, 0, 0, 0 }, |
- { 0, 1, 0, 1, 1 }, |
- { 0, 0, 1, 1, -1 } |
- }; |
- |
- Sk64 a, b, c; |
- |
- a.fHi = a.fLo = 0; |
- b.set(0); |
- c.setZero(); |
- REPORTER_ASSERT(reporter, a == b); |
- REPORTER_ASSERT(reporter, a == c); |
- bool_table_test(reporter, a, gBoolTable[kZero_BoolTest]); |
- |
- a.fHi = 0; a.fLo = 5; |
- b.set(5); |
- REPORTER_ASSERT(reporter, a == b); |
- REPORTER_ASSERT(reporter, a.is32() && a.get32() == 5 && !a.is64()); |
- bool_table_test(reporter, a, gBoolTable[kPos_BoolTest]); |
- |
- a.fHi = -1; a.fLo = (uint32_t)-5; |
- b.set(-5); |
- REPORTER_ASSERT(reporter, a == b); |
- REPORTER_ASSERT(reporter, a.is32() && a.get32() == -5 && !a.is64()); |
- bool_table_test(reporter, a, gBoolTable[kNeg_BoolTest]); |
- |
- a.setZero(); |
- b.set(6); |
- c.set(-6); |
- REPORTER_ASSERT(reporter, a != b && b != c && a != c); |
- REPORTER_ASSERT(reporter, !(a == b) && !(a == b) && !(a == b)); |
- REPORTER_ASSERT(reporter, a < b && b > a && a <= b && b >= a); |
- REPORTER_ASSERT(reporter, c < a && a > c && c <= a && a >= c); |
- REPORTER_ASSERT(reporter, c < b && b > c && c <= b && b >= c); |
- |
- // Now test add/sub |
- |
- SkRandom rand; |
- int i; |
- |
- for (i = 0; i < 1000; i++) |
- { |
- int aa = rand.nextS() >> 1; |
- int bb = rand.nextS() >> 1; |
- a.set(aa); |
- b.set(bb); |
- REPORTER_ASSERT(reporter, a.get32() == aa && b.get32() == bb); |
- c = a; c.add(bb); |
- REPORTER_ASSERT(reporter, c.get32() == aa + bb); |
- c = a; c.add(-bb); |
- REPORTER_ASSERT(reporter, c.get32() == aa - bb); |
- c = a; c.add(b); |
- REPORTER_ASSERT(reporter, c.get32() == aa + bb); |
- c = a; c.sub(b); |
- REPORTER_ASSERT(reporter, c.get32() == aa - bb); |
- } |
- |
- for (i = 0; i < 1000; i++) { |
- a.set64(rand.next64()); |
- b.set64(rand.next64()); |
- |
- if (!(i & 3)) // want to explicitly test these cases |
- { |
- a.fLo = 0; |
- b.fLo = 0; |
- } |
- else if (!(i & 7)) // want to explicitly test these cases |
- { |
- a.fHi = 0; |
- b.fHi = 0; |
- } |
- |
- int64_t aa = a.as64(); |
- int64_t bb = b.as64(); |
- |
- REPORTER_ASSERT(reporter, (a < b) == (aa < bb)); |
- REPORTER_ASSERT(reporter, (a <= b) == (aa <= bb)); |
- REPORTER_ASSERT(reporter, (a > b) == (aa > bb)); |
- REPORTER_ASSERT(reporter, (a >= b) == (aa >= bb)); |
- REPORTER_ASSERT(reporter, (a == b) == (aa == bb)); |
- REPORTER_ASSERT(reporter, (a != b) == (aa != bb)); |
- |
- c = a; c.add(b); |
- REPORTER_ASSERT(reporter, c.as64() == aa + bb); |
- c = a; c.sub(b); |
- REPORTER_ASSERT(reporter, c.as64() == aa - bb); |
- c = a; c.rsub(b); |
- REPORTER_ASSERT(reporter, c.as64() == bb - aa); |
- c = a; c.negate(); |
- REPORTER_ASSERT(reporter, c.as64() == -aa); |
- |
- int bits = rand.nextU() & 63; |
- c = a; c.shiftLeft(bits); |
- REPORTER_ASSERT(reporter, c.as64() == (aa << bits)); |
- c = a; c.shiftRight(bits); |
- REPORTER_ASSERT(reporter, c.as64() == (aa >> bits)); |
- c = a; c.roundRight(bits); |
- |
- int64_t tmp; |
- |
- tmp = aa; |
- if (bits > 0) |
- tmp += (int64_t)1 << (bits - 1); |
- REPORTER_ASSERT(reporter, c.as64() == (tmp >> bits)); |
- |
- c.setMul(a.fHi, b.fHi); |
- tmp = (int64_t)a.fHi * b.fHi; |
- REPORTER_ASSERT(reporter, c.as64() == tmp); |
- } |
- |
- |
- for (i = 0; i < 100000; i++) |
- { |
- Sk64 wide; |
- int32_t denom = rand.nextS(); |
- |
- while (denom == 0) |
- denom = rand.nextS(); |
- wide.setMul(rand.nextS(), rand.nextS()); |
- int64_t check = wide.getLongLong(); |
- |
- wide.div(denom, Sk64::kTrunc_DivOption); |
- check /= denom; |
- int64_t w = wide.getLongLong(); |
- |
- REPORTER_ASSERT(reporter, check == w); |
- |
- wide.setMul(rand.nextS(), rand.nextS()); |
- wide.abs(); |
- denom = wide.getSqrt(); |
- int32_t ck = (int32_t)sqrt((double)wide.getLongLong()); |
- int diff = denom - ck; |
- REPORTER_ASSERT(reporter, SkAbs32(diff) <= 1); |
- } |
-} |
- |
-DEF_TEST(Sk64Test, reporter) { |
- Sk64::UnitTestWithReporter(reporter); |
-} |