void Vector3iTest::testEquals() { Vector3i inputA(-1, 22, -90); Vector3i inputB(-1, 22, -90); Vector3i inputC(42, -32, 0); CPPUNIT_ASSERT(inputA == inputB); CPPUNIT_ASSERT(inputA != inputC); CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT(inputA != inputB) ); CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT(inputA == inputC) ); }
void Vector3iTest::testDeterminant() { Vector3i inputA(-3, 2, 8); Vector3i inputB(6, 43, -12); Vector3i inputC(-1, 22, -90); int expected = 13322; int actual = Vector3i::determinant(inputA, inputB, inputC); CPPUNIT_ASSERT_EQUAL(expected, actual); }
int main(void) { cl::Program addProgram( cl::STRING_CLASS( "int add(int a, int b) { return a + b; }") , false); cl::Program vectorWrapper( cl::STRING_CLASS( "int add(int a, int b); kernel void vectorAdd(global const int *inputA, global const int *inputB, global int *output){output[get_global_id(0)] = add(inputA[get_global_id(0)], inputB[get_global_id(0)]);}") , false); std::vector<cl::Program> programs; addProgram.compile(); vectorWrapper.compile(); cl::STRING_CLASS s = addProgram.getInfo<CL_PROGRAM_SOURCE>(); programs.push_back(addProgram); programs.push_back(vectorWrapper); cl::Program vectorAddProgram = cl::linkProgram(programs); auto vectorAddKernel = cl::make_kernel< cl::Buffer&, cl::Buffer&, cl::Buffer& >( vectorAddProgram, "vectorAdd" ); std::vector<int> inputA(numElements, 1); std::vector<int> inputB(numElements, 2); std::vector<int> output(numElements, 0xdeadbeef); cl::Buffer inputABuffer(begin(inputA), end(inputA), true); cl::Buffer inputBBuffer(begin(inputB), end(inputB), true); cl::Buffer outputBuffer(begin(output), end(output), false); vectorAddKernel( cl::EnqueueArgs( cl::NDRange(numElements), cl::NDRange(numElements)), inputABuffer, inputBBuffer, outputBuffer); cl::copy(outputBuffer, begin(output), end(output)); std::cout << "Output:\n"; for( int i = 1; i < numElements; ++i ) { std::cout << "\t" << output[i] << "\n"; } std::cout << "\n\n"; }
void Vector3fTest::testDeterminant() { Vector3f inputA(-3.3f, 2.2f, 8.8f); Vector3f inputB(-5.0f, 7.0f, 18.0f); Vector3f inputC(6.6f, 43.43f, -12.12f); float expected = 670.274f; float largeDelta = 0.0002f; float smallDelta = 0.000005f; float actual = Vector3f::determinant(inputA, inputB, inputC); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, largeDelta); CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, smallDelta) ); }
void Vector3fTest::testLength() { Vector3f inputA(-3.3f, 2.2f, 8.8f); float expectedA = 9.652460826f; float delta = 0.000005f; float actualA = inputA.length(); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA, actualA, delta); Vector3f inputB; float expectedB = 0.0f; float actualB = inputB.length(); CPPUNIT_ASSERT_EQUAL(expectedB, actualB); }
void Vector3fTest::testSubtraction() { Vector3f inputA(-3.3f, 2.2f, 8.8f); Vector3f inputB(6.6f, 43.43f, -12.12f); Vector3f expected(-9.9f, -41.23f, 20.92f); Vector3f actual = inputA - inputB; float delta = 0.000005f; CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.x, actual.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.y, actual.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.z, actual.z, delta); inputA -= inputB; CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.x, inputA.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.y, inputA.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.z, inputA.z, delta); }
void Vector3fTest::testAddition() { Vector3f inputA(-3.3f, 2.2f, 8.8f); Vector3f inputB(6.6f, 43.43f, -12.12f); Vector3f expected(3.3f, 45.63f, -3.32f); Vector3f actual = inputA + inputB; float delta = 0.000005f; CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.x, actual.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.y, actual.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.z, actual.z, delta); inputA += inputB; CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.x, inputA.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.y, inputA.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.z, inputA.z, delta); }
void Vector3iTest::testDotProduct() { Vector3i inputA(-3, 2, 8); Vector3i inputB(6, 43, -12); int expectedInt = -28; int actualInt = inputA.dot(inputB); CPPUNIT_ASSERT_EQUAL(expectedInt, actualInt); Vector3f inputC(6.6f, 43.43f, -12.12); float expectedFloat = -29.9f; float delta = 0.000005f; float actualFloat = inputA.dot(inputC); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedFloat, actualFloat, delta); }
void Vector3fTest::testDotProduct() { Vector3f inputA(-3.3f, 2.2f, 8.8f); Vector3f inputB(-5.0f, 7.0f, 18.0f); float expected = 190.3f; float largeDelta = 0.0002f; float smallDelta = 0.000005f; float actualA = inputA.dot(inputB); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actualA, largeDelta); CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actualA, smallDelta) ); Vector3i inputC(-5, 7, 18); float actualB = inputA.dot(inputC); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actualB, largeDelta); CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actualB, smallDelta) ); }
void Vector3fTest::testLengthInverse() { Vector3f inputA(-3.3f, 2.2f, 8.8f); float expectedA = 0.103600524f; float largeDelta = 0.0002f; float smallDelta = 0.000005f; float actualA = inputA.length_inverse(); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA, actualA, largeDelta); CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA, actualA, smallDelta) ); Vector3f inputB; float expectedB = 0.0f; float actualB = inputB.length_inverse(); CPPUNIT_ASSERT_EQUAL(expectedB, actualB); }
void Vector3iTest::testCrossProduct() { Vector3i inputA(-3, 2, 8); Vector3i inputB(6, 43, -12); Vector3i expectedInt(-368, 12, -141); Vector3i actualInt = inputA.cross(inputB); CPPUNIT_ASSERT(expectedInt == actualInt); Vector3f inputC(6.6f, 43.43f, -12.12f); Vector3f expectedFloat(-371.68f, 16.44f, -143.49f); float delta = 0.000005f; Vector3f actualFloat = inputA.cross(inputC); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedFloat.x, actualFloat.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedFloat.y, actualFloat.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedFloat.z, actualFloat.z, delta); }
void Vector3fTest::testCrossProduct() { Vector3f inputA(-3.3f, 2.2f, 8.8f); Vector3f inputB(-5.0f, 7.0f, 18.0f); Vector3f expected(-22.0f, 15.4f, -12.1f); float delta = 0.000005f; Vector3f actualA = inputA.cross(inputB); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.x, actualA.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.y, actualA.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.z, actualA.z, delta); Vector3i inputC(-5, 7, 18); Vector3f actualB = inputA.cross(inputC); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.x, actualB.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.y, actualB.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expected.z, actualB.z, delta); }
void Vector3fTest::testScaling() { Vector3f inputA(-3.3f, 2.2f, 8.8f); float inputFactor = 5.64f; Vector3f expectedA(-18.612f, 12.408f, 49.632f); float delta = 0.000005f; Vector3f actualA = inputA * inputFactor; CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA.x, actualA.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA.y, actualA.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA.z, actualA.z, delta); inputA *= inputFactor; CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA.x, inputA.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA.y, inputA.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedA.z, inputA.z, delta); Vector3f inputB(-3.3f, 2.2f, 8.8f); Vector3f expectedB(-0.585106382978723f, 0.390070921985816f, 1.56028368794326f); Vector3f actualB = inputB / inputFactor; CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedB.x, actualB.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedB.y, actualB.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedB.z, actualB.z, delta); inputB /= inputFactor; CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedB.x, inputB.x, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedB.y, inputB.y, delta); CPPUNIT_ASSERT_DOUBLES_EQUAL(expectedB.z, inputB.z, delta); }