TEST(ObserverService, RemoveObserver)
{
  nsCOMPtr<nsIObserverService> svc =
    do_CreateInstance("@mozilla.org/observer-service;1");

  RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
  RefPtr<TestObserver> b = new TestObserver(NS_LITERAL_STRING("B"));
  RefPtr<TestObserver> c = new TestObserver(NS_LITERAL_STRING("C"));

  svc->AddObserver(a, "Foo", false);
  svc->AddObserver(b, "Foo", true);

  // Remove from non-existent topic.
  nsresult rv = svc->RemoveObserver(a, "Bar");
  ASSERT_TRUE(NS_FAILED(rv));

  // Remove a.
  testResult(svc->RemoveObserver(a, "Foo"));

  // Remove b.
  testResult(svc->RemoveObserver(b, "Foo"));

  // Attempt to remove c.
  rv = svc->RemoveObserver(c, "Foo");
  ASSERT_TRUE(NS_FAILED(rv));
}
static void TestExpectedCount(
    nsIObserverService* svc,
    const char* topic,
    size_t expected)
{
  nsCOMPtr<nsISimpleEnumerator> e;
  nsresult rv = svc->EnumerateObservers(topic, getter_AddRefs(e));
  testResult(rv);
  EXPECT_TRUE(e);

  bool hasMore = false;
  rv = e->HasMoreElements(&hasMore);
  testResult(rv);

  if (expected == 0) {
    EXPECT_FALSE(hasMore);
    return;
  }

  size_t count = 0;
  while (hasMore) {
    count++;

    // Grab the element.
    nsCOMPtr<nsISupports> supports;
    e->GetNext(getter_AddRefs(supports));
    ASSERT_TRUE(supports);

    // Move on.
    rv = e->HasMoreElements(&hasMore);
    testResult(rv);
  }

  EXPECT_EQ(count, expected);
}
END_TEST

START_TEST(Server_HistorizingUpdateUpdate)
{
    UA_HistoryDataBackend backend = UA_HistoryDataBackend_Memory(1, 1);
    UA_HistorizingNodeIdSettings setting;
    setting.historizingBackend = backend;
    setting.maxHistoryDataResponseSize = 1000;
    setting.historizingUpdateStrategy = UA_HISTORIZINGUPDATESTRATEGY_USER;
    serverMutexLock();
    UA_StatusCode ret = gathering->registerNodeId(server, gathering->context, &outNodeId, setting);
    serverMutexUnlock();
    ck_assert_str_eq(UA_StatusCode_name(ret), UA_StatusCode_name(UA_STATUSCODE_GOOD));

    // fill backend with insert
    ck_assert_str_eq(UA_StatusCode_name(updateHistory(UA_PERFORMUPDATETYPE_INSERT, testData, NULL, NULL))
                                        , UA_StatusCode_name(UA_STATUSCODE_GOOD));

    testResult(testDataSorted, NULL);

    // delete some values
    ck_assert_str_eq(UA_StatusCode_name(deleteHistory(DELETE_START_TIME, DELETE_STOP_TIME)),
                     UA_StatusCode_name(UA_STATUSCODE_GOOD));

    testResult(testDataAfterDelete, NULL);

    // update all and insert some
    UA_StatusCode *result;
    size_t resultSize = 0;
    ck_assert_str_eq(UA_StatusCode_name(updateHistory(UA_PERFORMUPDATETYPE_UPDATE, testDataSorted, &result, &resultSize))
                                        , UA_StatusCode_name(UA_STATUSCODE_GOOD));

    for (size_t i = 0; i < resultSize; ++i) {
        ck_assert_str_eq(UA_StatusCode_name(result[i]), UA_StatusCode_name(testDataUpdateResult[i]));
    }
    UA_Array_delete(result, resultSize, &UA_TYPES[UA_TYPES_STATUSCODE]);

    UA_HistoryData data;
    UA_HistoryData_init(&data);

    testResult(testDataSorted, &data);

    for (size_t i = 0; i < data.dataValuesSize; ++i) {
        ck_assert_uint_eq(data.dataValues[i].hasValue, true);
        ck_assert(data.dataValues[i].value.type == &UA_TYPES[UA_TYPES_INT64]);
        ck_assert_uint_eq(*((UA_Int64*)data.dataValues[i].value.data), UA_PERFORMUPDATETYPE_UPDATE);
    }

    UA_HistoryData_deleteMembers(&data);
    UA_HistoryDataBackend_Memory_deleteMembers(&setting.historizingBackend);
}
TEST(ObserverService, AddObserver)
{
  nsCOMPtr<nsIObserverService> svc =
    do_CreateInstance("@mozilla.org/observer-service;1");

  // Add a strong ref.
  RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
  nsresult rv = svc->AddObserver(a, "Foo", false);
  testResult(rv);

  // Add a few weak ref.
  RefPtr<TestObserver> b = new TestObserver(NS_LITERAL_STRING("B"));
  rv = svc->AddObserver(b, "Bar", true);
  testResult(rv);
}
TEST(ObserverService, TestNotify)
{
  nsCString topicA; topicA.Assign( "topic-A" );
  nsCString topicB; topicB.Assign( "topic-B" );

  nsCOMPtr<nsIObserverService> svc =
    do_CreateInstance("@mozilla.org/observer-service;1");

  RefPtr<TestObserver> aObserver = new TestObserver(NS_LITERAL_STRING("Observer-A"));
  RefPtr<TestObserver> bObserver = new TestObserver(NS_LITERAL_STRING("Observer-B"));

  // Add two observers for topicA.
  testResult(svc->AddObserver(aObserver, topicA.get(), false));
  testResult(svc->AddObserver(bObserver, topicA.get(), false));

  // Add one observer for topicB.
  testResult(svc->AddObserver(bObserver, topicB.get(), false));

  // Notify topicA.
  NS_NAMED_LITERAL_STRING(dataA, "Testing Notify(observer-A, topic-A)");
  aObserver->mExpectedData = dataA;
  bObserver->mExpectedData = dataA;
  nsresult rv =
      svc->NotifyObservers(ToSupports(aObserver), topicA.get(), dataA.get());
  testResult(rv);
  ASSERT_EQ(aObserver->mObservations, 1);
  ASSERT_EQ(bObserver->mObservations, 1);

  // Notify topicB.
  NS_NAMED_LITERAL_STRING(dataB, "Testing Notify(observer-B, topic-B)");
  bObserver->mExpectedData = dataB;
  rv = svc->NotifyObservers(ToSupports(bObserver), topicB.get(), dataB.get());
  testResult(rv);
  ASSERT_EQ(aObserver->mObservations, 1);
  ASSERT_EQ(bObserver->mObservations, 2);

  // Remove one of the topicA observers, make sure it's not notified.
  testResult(svc->RemoveObserver(aObserver, topicA.get()));

  // Notify topicA, only bObserver is expected to be notified.
  bObserver->mExpectedData = dataA;
  rv = svc->NotifyObservers(ToSupports(aObserver), topicA.get(), dataA.get());
  testResult(rv);
  ASSERT_EQ(aObserver->mObservations, 1);
  ASSERT_EQ(bObserver->mObservations, 3);

  // Remove the other topicA observer, make sure none are notified.
  testResult(svc->RemoveObserver(bObserver, topicA.get()));
  rv = svc->NotifyObservers(ToSupports(aObserver), topicA.get(), dataA.get());
  testResult(rv);
  ASSERT_EQ(aObserver->mObservations, 1);
  ASSERT_EQ(bObserver->mObservations, 3);
}
示例#6
0
//------------------------------------------------------------------------------
void testVerify_P(char* result, PGM_P expect) {
  testOut->write('"');
  testOut->print(result);
  testOut->print("\",\"");
  print_P(testOut, expect);
  testOut->write('"');
  uint8_t n = strlen(result) + strlen_P(expect) + 5;
  testResult(!strcmp_P(result, expect), n);
}
示例#7
0
//------------------------------------------------------------------------------
void testVerify_P(char* result, PGM_P expect) {
  testOut->write('"');
  testOut->print(result);
  testOut->print("\",\"");
  testOut->print((const __FlashStringHelper*)expect);
  testOut->write('"');
  uint8_t n = strlen(result) + strlenPGM(expect) + 5;
  testResult(!strcmp_P(result, expect), n);
}
示例#8
0
int testDone(void) {
    int status = 0;
    
    epicsMutexMustLock(testLock);
    if (perlHarness) {
	if (!planned) printf("1..%d\n", tested);
    } else {
	if (planned && tested > planned) {
	    printf("\nRan %d tests but only planned for %d!\n", tested, planned);
	    status = 2;
	} else if (planned && tested < planned) {
	    printf("\nPlanned %d tests but only ran %d\n", planned, tested);
	    status = 2;
	}
	printf("\n    Results\n    =======\n       Tests: %-3d\n", tested);
	if (tested) {
	    testResult("Passed", passed);
	    if (bonus) testResult("Todo Passes", bonus);
	    if (failed) {
		testResult("Failed", failed);
		status = 1;
	    }
	    if (skipped) testResult("Skipped", skipped);
	}
    }
    if (Harness) {
        if (failed) {
            testFailure *fault = callocMustSucceed(1, sizeof(testFailure),
                "testDone calloc");
            fault->name     = testing;
            fault->tests    = tested;
            fault->failures = failed;
            fault->skips    = skipped;
            ellAdd(&faults, &fault->node);
        }
        Programs++;
        Tests += tested;
    }
    epicsMutexUnlock(testLock);
    return (status);
}
TEST(ObserverService, EnumerateWeakRefs)
{
  nsCOMPtr<nsIObserverService> svc =
    do_CreateInstance("@mozilla.org/observer-service;1");

  const size_t kFooCount = 10;
  for (size_t i = 0; i < kFooCount; i++) {
    RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
    testResult(svc->AddObserver(a, "Foo", true));
  }

  // All refs are out of scope, expect enumeration to be empty.
  TestExpectedCount(svc, "Foo", 0);

  // Now test a mixture.
  for (size_t i = 0; i < kFooCount; i++) {
    RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
    RefPtr<TestObserver> b = new TestObserver(NS_LITERAL_STRING("B"));

    // Register a as weak for "Foo".
    testResult(svc->AddObserver(a, "Foo", true));

    // Register b as strong for "Foo".
    testResult(svc->AddObserver(b, "Foo", false));
  }

  // Expect the b instances to stick around.
  TestExpectedCount(svc, "Foo", kFooCount);

  // Now add a couple weak refs, but don't go out of scope.
  RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
  testResult(svc->AddObserver(a, "Foo", true));
  RefPtr<TestObserver> b = new TestObserver(NS_LITERAL_STRING("B"));
  testResult(svc->AddObserver(b, "Foo", true));

  // Expect all the observers from before and the two new ones.
  TestExpectedCount(svc, "Foo", kFooCount + 2);
}
TEST_F(TestPacketFragmentManager, FragmentDefragment)
{
    auto halfWay = PacketFragmentManager::FragmentPacket(delta4kBytePayloadServerSequence22);

    PacketFragmentManager toTest;

    for (auto fragment : halfWay)
    {
        toTest.AddPacket(PacketFragment(fragment));
    }

    PacketDelta testResult(toTest.GetDefragmentedPacket());
    EXPECT_EQ(testResult, delta4kBytePayloadServerSequence22);
}
TEST(ObserverService, EnumerateEmpty)
{
  nsCOMPtr<nsIObserverService> svc =
    do_CreateInstance("@mozilla.org/observer-service;1");

  // Try with no observers.
  TestExpectedCount(svc, "A", 0);

  // Now add an observer and enumerate an unobserved topic.
  RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
  testResult(svc->AddObserver(a, "Foo", false));

  TestExpectedCount(svc, "A", 0);
}
TEST(ObserverService, Enumerate)
{
  nsCOMPtr<nsIObserverService> svc =
    do_CreateInstance("@mozilla.org/observer-service;1");

  const size_t kFooCount = 10;
  for (size_t i = 0; i < kFooCount; i++) {
    RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
    testResult(svc->AddObserver(a, "Foo", false));
  }

  const size_t kBarCount = kFooCount / 2;
  for (size_t i = 0; i < kBarCount; i++) {
    RefPtr<TestObserver> a = new TestObserver(NS_LITERAL_STRING("A"));
    testResult(svc->AddObserver(a, "Bar", false));
  }

  // Enumerate "Foo".
  TestExpectedCount(svc, "Foo", kFooCount);

  // Enumerate "Bar".
  TestExpectedCount(svc, "Bar", kBarCount);
}
示例#13
0
int main() {
	int score = 0;

	printf("\nIniciando o teste do módulo message\n");

	score += testResult();

	score += testKey();

	score += testValue();

	score += testEntry();

	score += testKeys();

	score += testInvalida();

	printf("Resultados do teste do módulo message: %d em 6\n\n",score);

	return score;
}
TEST_F(TestPacketFragmentManager, FragmentDefragmentOldThenNew)
{
    auto halfWayOld = PacketFragmentManager::FragmentPacket(delta4kBytePayloadServerSequence22);
    auto halfWayNew = PacketFragmentManager::FragmentPacket(delta4kBytePayloadServerSequence44);

    PacketFragmentManager toTest;

    for (auto fragment : halfWayOld)
    {
        toTest.AddPacket(PacketFragment(fragment));
    }

    for (auto fragment : halfWayNew)
    {
        toTest.AddPacket(PacketFragment(fragment));
    }

    // always expect the older one.
    PacketDelta testResult(toTest.GetDefragmentedPacket());
    EXPECT_EQ(testResult, delta4kBytePayloadServerSequence44);
}
示例#15
0
int main(int argc, char *argv[])
{
    nsCString topicA; topicA.Assign( "topic-A" );
    nsCString topicB; topicB.Assign( "topic-B" );
    nsresult rv;

    nsresult res = nsComponentManager::CreateInstance("@mozilla.org/observer-service;1",
                                                NULL,
                                                 NS_GET_IID(nsIObserverService),
                                                (void **) &anObserverService);
	
    if (res == NS_OK) {

        nsIObserver *aObserver = new TestObserver(NS_LITERAL_STRING("Observer-A"));
        aObserver->AddRef();
        nsIObserver *bObserver = new TestObserver(NS_LITERAL_STRING("Observer-B"));
        bObserver->AddRef();
            
        printf("Adding Observer-A as observer of topic-A...\n");
        rv = anObserverService->AddObserver(aObserver, topicA.get(), PR_FALSE);
        testResult(rv);
 
        printf("Adding Observer-B as observer of topic-A...\n");
        rv = anObserverService->AddObserver(bObserver, topicA.get(), PR_FALSE);
        testResult(rv);
 
        printf("Adding Observer-B as observer of topic-B...\n");
        rv = anObserverService->AddObserver(bObserver, topicB.get(), PR_FALSE);
        testResult(rv);

        printf("Testing Notify(observer-A, topic-A)...\n");
        rv = anObserverService->NotifyObservers( aObserver,
                                   topicA.get(),
                                   NS_LITERAL_STRING("Testing Notify(observer-A, topic-A)").get() );
        testResult(rv);

        printf("Testing Notify(observer-B, topic-B)...\n");
        rv = anObserverService->NotifyObservers( bObserver,
                                   topicB.get(),
                                   NS_LITERAL_STRING("Testing Notify(observer-B, topic-B)").get() );
        testResult(rv);
 
        printf("Testing EnumerateObserverList (for topic-A)...\n");
        nsCOMPtr<nsISimpleEnumerator> e;
        rv = anObserverService->EnumerateObservers(topicA.get(), getter_AddRefs(e));

        testResult(rv);

        printf("Enumerating observers of topic-A...\n");
        if ( e ) {
          nsCOMPtr<nsIObserver> observer;
          PRBool loop = PR_TRUE;
          while( NS_SUCCEEDED(e->HasMoreElements(&loop)) && loop) 
          {
              e->GetNext(getter_AddRefs(observer));
              printf("Calling observe on enumerated observer ");
              printString(NS_REINTERPRET_CAST(TestObserver*,
                                              NS_REINTERPRET_CAST(void*, observer.get()))->mName);
              printf("...\n");
              rv = observer->Observe( observer, 
                                      topicA.get(), 
                                      NS_LITERAL_STRING("during enumeration").get() );
              testResult(rv);
          }
        }
        printf("...done enumerating observers of topic-A\n");

        printf("Removing Observer-A...\n");
        rv = anObserverService->RemoveObserver(aObserver, topicA.get());
        testResult(rv);


        printf("Removing Observer-B (topic-A)...\n");
        rv = anObserverService->RemoveObserver(bObserver, topicB.get());
        testResult(rv);
        printf("Removing Observer-B (topic-B)...\n");
        rv = anObserverService->RemoveObserver(bObserver, topicA.get());
        testResult(rv);
       
    }
        /// Run all benchmarking tests.
        static void RunAllTests()
        {
            Benchmarker& instance = Instance();
            std::vector<Outputter*>& outputters = instance._outputters;

            // Get the tests for execution.
            std::vector<TestDescriptor*> tests = instance.GetTests();

            // Begin output.
            for (std::size_t outputterIndex = 0;
                 outputterIndex < outputters.size();
                 outputterIndex++)
                outputters[outputterIndex]->Begin(tests.size());

            // Run through all the tests in ascending order.
            std::size_t index = 0;

            while (index < tests.size())
            {
                // Get the test descriptor.
                TestDescriptor* descriptor = tests[index++];

                // Check if test matches include filters
                if (instance._include.size() > 0)
                {
                	bool included = false;
                	std::string name = descriptor->FixtureName + "." +
                        descriptor->TestName + descriptor->Parameters;

                	for (std::size_t i = 0; i <instance._include.size(); i++)
                    {
                		if (name.find(instance._include[i]) !=
                            std::string::npos)
                        {
                			included = true;
                			break;
                		}
                	}

                	if (!included)
                		continue;
                }

                // Describe the beginning of the run.
                for (std::size_t outputterIndex = 0;
                     outputterIndex < outputters.size();
                     outputterIndex++)
                    outputters[outputterIndex]->BeginTest(
                        descriptor->FixtureName,
                        descriptor->TestName,
                        descriptor->Parameters,
                        descriptor->Runs,
                        descriptor->Iterations
                    );

                // Execute each individual run.
                int64_t timeTotal = 0,
                        timeRunMin = std::numeric_limits<int64_t>::max(),
                        timeRunMax = std::numeric_limits<int64_t>::min();

                std::size_t run = descriptor->Runs;
                while (run--)
                {
                    // Construct a test instance.
                    Test* test = descriptor->Factory->CreateTest();

                    // Run the test.
                    int64_t time = test->Run(descriptor->Iterations);

                    // Store the test time.
                    timeTotal += time;
                    if (timeRunMin > time)
                        timeRunMin = time;
                    if (timeRunMax < time)
                        timeRunMax = time;

                    // Dispose of the test instance.
                    delete test;
                }

                // Calculate the test result.
                TestResult testResult(descriptor->Runs,
                                      descriptor->Iterations,
                                      timeTotal,
                                      timeRunMin,
                                      timeRunMax);

                // Describe the end of the run.
                for (std::size_t outputterIndex = 0;
                     outputterIndex < outputters.size();
                     outputterIndex++)
                    outputters[outputterIndex]->EndTest(
                        descriptor->FixtureName,
                        descriptor->TestName,
                        descriptor->Parameters,
                        testResult
                    );

            }

            // Begin output.
            for (std::size_t outputterIndex = 0;
                 outputterIndex < outputters.size();
                 outputterIndex++)
                outputters[outputterIndex]->End(tests.size());
        }
示例#17
0
/*
 * Make sure that all of the fitness functions are working correctly. A bug in there
 * would be hard to notice without explicitly testing it.
 * 1: There is a bug in one of the fitness functions.
 */
int testFitness()
{
    if (fullKeyboard == FK_NO) {
        printf("\nTesting calcInRoll():\n");
        testResult(calcInRoll(0, 0), 0);
        testResult(calcInRoll(10, 11), inRoll);
        testResult(calcInRoll(14, 15), 0);
        testResult(calcInRoll(29, 28), inRoll);
        testResult(calcInRoll(3, 4), 0);
        testResult(calcInRoll(4, 3), 0);
        testResult(calcInRoll(11, 2), 0);
        testResult(calcInRoll(2, 11), 0);

        printf("\nTesting calcOutRoll():\n");
        testResult(calcOutRoll(0, 0), 0);
        testResult(calcOutRoll(11, 10), outRoll);
        testResult(calcOutRoll(15, 14), 0);
        testResult(calcOutRoll(28, 29), outRoll);
        testResult(calcOutRoll(3, 4), 0);
        testResult(calcOutRoll(14, 13), 0);

        printf("\nTesting calcSameFinger():\n");
        testResult(calcSameFinger(0, 0), 0);
        testResult(calcSameFinger(10, 0), sameFingerP);
        testResult(calcSameFinger(11, 21), sameFingerR);
        testResult(calcSameFinger(7, 27), sameFingerM);
        testResult(calcSameFinger(13, 4), sameFingerI);
        testResult(calcSameFinger(0, 4), 0);

        printf("\nTesting calcRowChange():\n");
        testResult(calcRowChange(8, 8), 0);
        testResult(calcRowChange(10, 0), rowChangeUp);
        testResult(calcRowChange(11, 0), rowChangeUp + handWarp);
        testResult(calcRowChange(13, 2), rowChangeUp + handSmooth);
        testResult(calcRowChange(8, 16), rowChangeDown);
        testResult(calcRowChange(8, 26), rowChangeDown);
        testResult(calcRowChange(28, 9), rowChangeUp + handWarp);
        testResult(calcRowChange(25, 5), rowChangeUp);

        printf("\nTesting calcHomeJump():\n");
        testResult(calcHomeJump(8, 8), 0);
        testResult(calcHomeJump(10, 0), 0);
        testResult(calcHomeJump(11, 0), 0);
        testResult(calcHomeJump(10, 1), 0);
        testResult(calcHomeJump(8, 16), 0);
        testResult(calcHomeJump(8, 26), homeJump + homeJumpIndex);
        testResult(calcHomeJump(28, 9), homeJump);
        testResult(calcHomeJump(25, 5), homeJump);

        printf("\nTesting calcToCenter():\n");
        testResult(calcToCenter(0, 0), 0);
        testResult(calcToCenter(13, 14), toCenter);
        testResult(calcToCenter(17, 15), toCenter);
        testResult(calcToCenter(4, 1), toCenter);
        testResult(calcToCenter(25, 9), toCenter);
        testResult(calcToCenter(25, 15), 0);

    } else if (fullKeyboard == FK_STANDARD) {
        printf("\nTesting calcHomeJump():\n");
        testResult(calcHomeJump(8, 8), 0);
        testResult(calcHomeJump(14, 0), 0);
        testResult(calcHomeJump(15, 0), 0);
        testResult(calcHomeJump(14, 1), 0);
        testResult(calcHomeJump(36, 9), 0);
        testResult(calcHomeJump(48, 9), doubleJump + homeJumpIndex);
        testResult(calcHomeJump(49, 23), homeJump + homeJumpIndex);
        testResult(calcHomeJump(44, 18), homeJump);
        testResult(calcHomeJump(44, 3), doubleJump);


    } else {
        printf("\nTesting calcInRoll():\n");
        testResult(calcInRoll(0, 0), 0);
        testResult(calcInRoll(2, 3), inRoll);
        testResult(calcInRoll(2, 14), 0);
        testResult(calcInRoll(13, 3), 0);
        testResult(calcInRoll(29, 28), inRoll);
        testResult(calcInRoll(28, 27), 0);

        printf("\nTesting calcSameFinger():\n");
        testResult(calcSameFinger(0, 0), 0);
        testResult(calcSameFinger(11, 0), sameFingerP);
        testResult(calcSameFinger(12, 23), sameFingerR);
        testResult(calcSameFinger(7, 29), sameFingerM);
        testResult(calcSameFinger(25, 15), sameFingerI);
        testResult(calcSameFinger(0, 4), 0);

        printf("\nTesting calcHomeJump():\n");
        testResult(calcHomeJump(8, 8), 0);
        testResult(calcHomeJump(11, 0), 0);
        testResult(calcHomeJump(12, 0), 0);
        testResult(calcHomeJump(11, 1), 0);
        testResult(calcHomeJump(8, 17), 0);
        testResult(calcHomeJump(19, 39), homeJump + homeJumpIndex);
        testResult(calcHomeJump(41, 20), homeJump);
        testResult(calcHomeJump(38, 16), homeJump);
    }


    return 0;
}
示例#18
0
//------------------------------------------------------------------------------
void testVerify_P(bool b, PGM_P msg) {
  testOut->print((const __FlashStringHelper*)msg);
  uint8_t n = strlenPGM(msg);
  testResult(b, n);
}
示例#19
0
文件: erro.c 项目: nereuls/zeromqTest
void testResultNotEqual(long int result,long int expected){
  testResult(result,notequal,expected);
}
int main(int argc, char *argv[])
{
    nsCString topicA; topicA.Assign( "topic-A" );
    nsCString topicB; topicB.Assign( "topic-B" );
    nsresult rv;

    nsresult res = CallCreateInstance("@mozilla.org/observer-service;1", &anObserverService);
	
    if (res == NS_OK) {

        nsIObserver *aObserver = new TestObserver(NS_LITERAL_STRING("Observer-A"));
        aObserver->AddRef();
        nsIObserver *bObserver = new TestObserver(NS_LITERAL_STRING("Observer-B"));
        bObserver->AddRef();
            
        printf("Adding Observer-A as observer of topic-A...\n");
        rv = anObserverService->AddObserver(aObserver, topicA.get(), false);
        testResult(rv);
 
        printf("Adding Observer-B as observer of topic-A...\n");
        rv = anObserverService->AddObserver(bObserver, topicA.get(), false);
        testResult(rv);
 
        printf("Adding Observer-B as observer of topic-B...\n");
        rv = anObserverService->AddObserver(bObserver, topicB.get(), false);
        testResult(rv);

        printf("Testing Notify(observer-A, topic-A)...\n");
        rv = anObserverService->NotifyObservers( aObserver,
                                   topicA.get(),
                                   u"Testing Notify(observer-A, topic-A)" );
        testResult(rv);

        printf("Testing Notify(observer-B, topic-B)...\n");
        rv = anObserverService->NotifyObservers( bObserver,
                                   topicB.get(),
                                   u"Testing Notify(observer-B, topic-B)" );
        testResult(rv);
 
        printf("Testing EnumerateObserverList (for topic-A)...\n");
        nsCOMPtr<nsISimpleEnumerator> e;
        rv = anObserverService->EnumerateObservers(topicA.get(), getter_AddRefs(e));

        testResult(rv);

        printf("Enumerating observers of topic-A...\n");
        if ( e ) {
          nsCOMPtr<nsIObserver> observer;
          bool loop = true;
          while( NS_SUCCEEDED(e->HasMoreElements(&loop)) && loop) 
          {
              nsCOMPtr<nsISupports> supports;
              e->GetNext(getter_AddRefs(supports));
              observer = do_QueryInterface(supports);
              printf("Calling observe on enumerated observer ");
              printString(reinterpret_cast<TestObserver*>
                                          (reinterpret_cast<void*>(observer.get()))->mName);
              printf("...\n");
              rv = observer->Observe( observer, 
                                      topicA.get(), 
                                      u"during enumeration" );
              testResult(rv);
          }
        }
        printf("...done enumerating observers of topic-A\n");

        printf("Removing Observer-A...\n");
        rv = anObserverService->RemoveObserver(aObserver, topicA.get());
        testResult(rv);


        printf("Removing Observer-B (topic-A)...\n");
        rv = anObserverService->RemoveObserver(bObserver, topicB.get());
        testResult(rv);
        printf("Removing Observer-B (topic-B)...\n");
        rv = anObserverService->RemoveObserver(bObserver, topicA.get());
        testResult(rv);
       
    }
    return 0;
}
示例#21
0
//------------------------------------------------------------------------------
void testVerify_P(bool b, PGM_P msg) {
  print_P(testOut, msg);
  uint8_t n = strlen_P(msg);
  testResult(b, n);
}
示例#22
0
    void testCentroid(void) {
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        std::string header = "Centroid Operations";
        testSectionHeader(header);
        int testNum = 1;   // Test starting number
        int numDims = 5;   // Dimensions in test arrays (don't go below 2)
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            testTitle(testNum++, header, "Centroid Operations - setCentroid(default)");

            Cluster c1(numDims);
            std::cout << "Cluster c" << c1.getId() << ";";
            std::cout << std::endl;

            std::ifstream inFile;
            std::cout << "std::ifstream inFile;";
            std::cout << std::endl;

            // WARNING!! MAKE SURE THE CURRENT WORKING DIRECTORY IS SET TO WHEREVER YOU HAVE main.cpp
            inFile.open("infile_1.txt");
            std::cout << "inFile.open(\"infile_1.txt\");";
            std::cout << std::endl;

            inFile >> c1;
            std::cout << "inFile >> c" << c1.getId() << ";";
            std::cout << std::endl;

            c1.setCentroid();
            std::cout << "c" << c1.getId() << ".setCentroid();";
            std::cout << std::endl;

            testResult();
            std::cout << "c" << c1.getId() << ".getCentroid(): (" << c1.getCentroid() << ")";
            std::cout << std::endl;

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            testTitle(testNum++, header, "Centroid Operations - setCentroid(point)");

            Cluster c1(numDims);
            std::cout << "Cluster c" << c1.getId() << ";";
            std::cout << std::endl;

            std::ifstream inFile;
            std::cout << "std::ifstream inFile;";
            std::cout << std::endl;

            // WARNING!! MAKE SURE THE CURRENT WORKING DIRECTORY IS SET TO WHEREVER YOU HAVE main.cpp
            inFile.open("infile_1.txt");
            std::cout << "inFile.open(\"infile_1.txt\");";
            std::cout << std::endl;

            inFile >> c1;
            std::cout << "inFile >> c" << c1.getId() << ";";
            std::cout << std::endl;

            double *p1arr = new double[numDims];

            randPt(numDims, 2, 4, p1arr);

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            delete[] p1arr;

            std::cout << std::endl;
            c1.setCentroid(p1);
            std::cout << "c1.setCentroid(p1);";
            std::cout << std::endl;

            testResult();
            std::cout << "c" << c1.getId() << ".getCentroid(): (" << c1.getCentroid() << ")";
            std::cout << std::endl;
            c1.loud();
            std::cout << std::endl;

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            testTitle(testNum++, header, "Centroid Operations - setCentroid(point) [Not in cluster]");

            Cluster c1(numDims);
            std::cout << "Cluster c" << c1.getId() << ";";
            std::cout << std::endl;

            std::ifstream inFile;
            std::cout << "std::ifstream inFile;";
            std::cout << std::endl;

            // WARNING!! MAKE SURE THE CURRENT WORKING DIRECTORY IS SET TO WHEREVER YOU HAVE main.cpp
            inFile.open("infile_1.txt");
            std::cout << "inFile.open(\"infile_1.txt\");";
            std::cout << std::endl;

            inFile >> c1;
            std::cout << "inFile >> c" << c1.getId() << ";";
            std::cout << std::endl;

            double *p1arr = new double[numDims];

            randPt(numDims, 0, 9, p1arr);

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            delete[] p1arr;

            std::cout << std::endl;
            c1.setCentroid(p1);
            std::cout << "c1.setCentroid(p1);";
            std::cout << std::endl;

            testResult();
            std::cout << "c" << c1.getId() << ".getCentroid(): (" << c1.getCentroid() << ")";
            std::cout << std::endl;
            c1.loud();
            std::cout << std::endl;

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            testTitle(testNum++, header, "Centroid Operations - computeCentroid() [1]");

            Cluster c1(numDims);
            std::cout << "Cluster c" << c1.getId() << ";";
            std::cout << std::endl;

            std::ifstream inFile;
            std::cout << "std::ifstream inFile;";
            std::cout << std::endl;

            // WARNING!! MAKE SURE THE CURRENT WORKING DIRECTORY IS SET TO WHEREVER YOU HAVE main.cpp
            inFile.open("infile_1.txt");
            std::cout << "inFile.open(\"infile_1.txt\");";
            std::cout << std::endl;

            inFile >> c1;
            std::cout << "inFile >> c" << c1.getId() << ";";
            std::cout << std::endl;

            c1.setCentroid();
            std::cout << "c" << c1.getId() << ".setCentroid();";
            std::cout << std::endl;

            c1.computeCentroid();
            std::cout << "c" << c1.getId() << ".computeCentroid();";
            std::cout << std::endl;

            testResult();
            std::cout << "c" << c1.getId() << ".getCentroid(): (" << c1.getCentroid() << ")";
            std::cout << std::endl;

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            testTitle(testNum++, header, "Centroid Operations - computeCentroid() [2]");

            Cluster c1(numDims);
            std::cout << "Cluster c" << c1.getId() << ";";
            std::cout << std::endl;

            double p1arr[] = {21,12,0,0,0};
            double p2arr[] = {0,0,15,0,0};
            double p3arr[] = {0,0,0,9,3};

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p2arr[" << numDims << "] = ";
            testPtArr(numDims, p2arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p3arr[" << numDims << "] = ";
            testPtArr(numDims, p3arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            Point p2(numDims, p2arr);
            std::cout << "Point p2(" << numDims << ", p2arr);";

            std::cout << std::endl;
            Point p3(numDims, p3arr);
            std::cout << "Point p3(" << numDims << ", p3arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            std::cout << std::endl;
            c1.add(p2);
            std::cout << "c1.add(p2);";

            std::cout << std::endl;
            c1.add(p3);
            std::cout << "c1.add(p3);";

            std::cout << std::endl;
            c1.setCentroid();
            std::cout << "c" << c1.getId() << ".setCentroid();";
            std::cout << std::endl;

            c1.computeCentroid();
            std::cout << "c" << c1.getId() << ".computeCentroid();";
            std::cout << std::endl;
            testResult();
            std::cout << "c" << c1.getId() << ".getCentroid(): (" << c1.getCentroid() << ")";
            std::cout << std::endl;

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            testTitle(testNum++, header, "Centroid Operations - Move(&)");

            Cluster c1(numDims);
            std::cout << "Cluster c1(numDims);";
            std::cout << std::endl;

            Cluster c2(numDims);
            std::cout << "Cluster c2(numDims);";
            std::cout << std::endl;

            double p1arr[] = {6,12,0,0,0};
            double p2arr[] = {0,0,18,0,0};
            double p3arr[] = {0,0,0,24,30};

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p2arr[" << numDims << "] = ";
            testPtArr(numDims, p2arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p3arr[" << numDims << "] = ";
            testPtArr(numDims, p3arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            Point p2(numDims, p2arr);
            std::cout << "Point p2(" << numDims << ", p2arr);";

            std::cout << std::endl;
            Point p3(numDims, p3arr);
            std::cout << "Point p3(" << numDims << ", p3arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            std::cout << std::endl;
            c1.add(p2);
            std::cout << "c1.add(p2);";

            std::cout << std::endl;
            c1.add(p3);
            std::cout << "c1.add(p3);";

            std::cout << std::endl;
            std::cout << std::endl << std::endl << "[Current Data Formulation]";

            std::cout << std::endl;
            c1.loud("c1");

            std::cout << std::endl;
            c2.loud("c2");
            std::cout << std::endl;

            c1.computeCentroid();
            std::cout << std::endl;
            std::cout << "c1.computeCentroid(): (" << c1.getCentroid() << ")";

            c2.computeCentroid();
            std::cout << std::endl;
            std::cout << "c2.computeCentroid(): (" << c2.getCentroid() << ")";

            std::cout << std::endl;
            std::cout << std::endl;
            Cluster::Move(&p1,&c1,&c2).perform();
            std::cout << "Cluster::Move(&p1,&c1,&c2).perform();";

            std::cout << std::endl << std::endl << "[Current Data Formulation]";

            std::cout << std::endl;
            std::cout << std::endl;
            c1.loud("c1");

            std::cout << std::endl;
            c2.loud("c2");
            std::cout << std::endl;

            std::cout << std::endl;
            std::cout << "c1.computeCentroid(): (" << c1.getCentroid() << ")";

            c2.computeCentroid();
            std::cout << std::endl;
            std::cout << "c2.computeCentroid(): (" << c2.getCentroid() << ")";

            Cluster::Move(&p2,&c1,&c2).perform();
            std::cout << std::endl;
            std::cout << "Cluster::Move(&p2,&c1,&c2).perform();";

            std::cout << std::endl << std::endl << "[Current Data Formulation]";

            std::cout << std::endl;
            std::cout << std::endl;
            c1.loud("c1");

            std::cout << std::endl;
            c2.loud("c2");
            std::cout << std::endl;

            c1.computeCentroid();
            std::cout << std::endl;
            std::cout << "c1.computeCentroid(): (" << c1.getCentroid() << ")";

            c2.computeCentroid();
            std::cout << std::endl;
            std::cout << "c2.computeCentroid(): (" << c2.getCentroid() << ")";

            std::cout << std::endl;
            Cluster::Move(&p3,&c1,&c2).perform();
            std::cout << "Cluster::Move(&p3,&c1,&c2).perform();";

            std::cout << std::endl << std::endl << "[Current Data Formulation]";

            std::cout << std::endl;
            c1.loud("c1");

            std::cout << std::endl;
            c2.loud("c2");
            std::cout << std::endl;

            testResult();
            c1.computeCentroid();
            std::cout << std::endl;
            std::cout << "c1.computeCentroid(): (" << c1.getCentroid() << ")";


            c2.computeCentroid();
            std::cout << std::endl;
            std::cout << "c2.computeCentroid(): (" << c2.getCentroid() << ")";

            std::cout << std::endl;
            c1.loud("c1");

            std::cout << std::endl;
            c2.loud("c2");
            std::cout << std::endl;

            testCheck();
            std::cout << std::endl << "c1.computeCentroid(): [Garbage]";
            std::cout << std::endl << "c2.computeCentroid(): (2, 4, 6, 8, 10)";
            std::cout << std::endl;
            std::cout << std::endl << "c1: Size(0)   Centroid: (2.07409e-236)";
            std::cout << std::endl << "{}";
            std::cout << std::endl;
            std::cout << std::endl << "c2: Size(3)   Centroid: (2, 4, 6, 8, 10)";
            std::cout << std::endl << "{(0,0,0,24,30),(0,0,18,0,0),(6,12,0,0,0)}";

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            numDims = 6;   // Dimensions in test arrays (don't go below 2)
            testTitle(testNum++, header, "Centroid Operations - pickPoints()");

            Cluster c1(numDims);
            std::cout << "Cluster c1(numDims);";
            std::cout << std::endl;

            double p1arr[] = {6,0,0,0,0,0};
            double p2arr[] = {0,12,0,0,0,0};
            double p3arr[] = {0,0,18,0,0,0};
            double p4arr[] = {0,0,0,24,0,0};
            double p5arr[] = {0,0,0,0,30,0};
            double p6arr[] = {0,0,0,0,0,36};

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p2arr[" << numDims << "] = ";
            testPtArr(numDims, p2arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p3arr[" << numDims << "] = ";
            testPtArr(numDims, p3arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p4arr[" << numDims << "] = ";
            testPtArr(numDims, p4arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p5arr[" << numDims << "] = ";
            testPtArr(numDims, p5arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p6arr[" << numDims << "] = ";
            testPtArr(numDims, p6arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            Point p2(numDims, p2arr);
            std::cout << "Point p2(" << numDims << ", p2arr);";

            std::cout << std::endl;
            Point p3(numDims, p3arr);
            std::cout << "Point p3(" << numDims << ", p3arr);";

            std::cout << std::endl;
            Point p4(numDims, p4arr);
            std::cout << "Point p4(" << numDims << ", p4arr);";

            std::cout << std::endl;
            Point p5(numDims, p5arr);
            std::cout << "Point p5(" << numDims << ", p5arr);";

            std::cout << std::endl;
            Point p6(numDims, p6arr);
            std::cout << "Point p6(" << numDims << ", p5arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            std::cout << std::endl;
            c1.add(p2);
            std::cout << "c1.add(p2);";

            std::cout << std::endl;
            c1.add(p3);
            std::cout << "c1.add(p3);";

            std::cout << std::endl;
            c1.add(p4);
            std::cout << "c1.add(p4);";

            std::cout << std::endl;
            c1.add(p5);
            std::cout << "c1.add(p5);";

            std::cout << std::endl;
            c1.add(p6);
            std::cout << "c1.add(p6);";

            PointPtr pickArray1[1];
            PointPtr pickArray2[2];
            PointPtr pickArray3[3];
            PointPtr pickArray4[4];
            PointPtr pickArray5[5];
            PointPtr pickArray6[6];
            PointPtr pickArray7[7];

            std::cout << std::endl;
            c1.pickPoints(1,pickArray1);
            std::cout << "c1.pickPoints(1,pickArray1);";

            std::cout << std::endl;
            c1.pickPoints(2,pickArray2);
            std::cout << "c2.pickPoints(2,pickArray2);";

            std::cout << std::endl;
            c1.pickPoints(3,pickArray3);
            std::cout << "c3.pickPoints(3,pickArray3);";

            std::cout << std::endl;
            c1.pickPoints(4,pickArray4);
            std::cout << "c4.pickPoints(4,pickArray4);";

            std::cout << std::endl;
            c1.pickPoints(5,pickArray5);
            std::cout << "c5.pickPoints(5,pickArray5);";

            std::cout << std::endl;
            c1.pickPoints(6,pickArray6);
            std::cout << "c1.pickPoints(6,pickArray6);";

            std::cout << std::endl;
            c1.pickPoints(7,pickArray7);
            std::cout << "c1.pickPoints(7,pickArray7);";

            testResult();
            std::cout << std::endl << "pickArray1:\n(" << *pickArray1[0] << ")";
            std::cout << std::endl << "pickArray2:\n(" << *pickArray2[0] << ")"
            << "\n(" << *pickArray2[1] << ")";
            std::cout << std::endl << "pickArray3:\n(" << *pickArray3[0] << ")"
            << "\n(" << *pickArray3[1] << ")"
            << "\n(" << *pickArray3[2] << ")";
            std::cout << std::endl << "pickArray4:\n(" << *pickArray4[0] << ")"
            << "\n(" << *pickArray4[1] << ")"
            << "\n(" << *pickArray4[2] << ")"
            << "\n(" << *pickArray4[3] << ")";
            std::cout << std::endl << "pickArray5:\n(" << *pickArray5[0] << ")"
            << "\n(" << *pickArray5[1] << ")"
            << "\n(" << *pickArray5[2] << ")"
            << "\n(" << *pickArray5[3] << ")"
            << "\n(" << *pickArray5[4] << ")";
            std::cout << std::endl << "pickArray6:\n(" << *pickArray6[0] << ")"
            << "\n(" << *pickArray6[1] << ")"
            << "\n(" << *pickArray6[2] << ")"
            << "\n(" << *pickArray6[3] << ")"
            << "\n(" << *pickArray6[4] << ")"
            << "\n(" << *pickArray6[5] << ")";
            std::cout << std::endl << "pickArray6:\n(" << *pickArray7[0] << ")"
            << "\n(" << *pickArray7[1] << ")"
            << "\n(" << *pickArray7[2] << ")"
            << "\n(" << *pickArray7[3] << ")"
            << "\n(" << *pickArray7[4] << ")"
            << "\n(" << *pickArray7[5] << ")";
            std::cout << std::endl;

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            numDims = 4;   // Dimensions in test arrays (don't go below 2)
            testTitle(testNum++, header, "Centroid Operations - intraClusterDistance()");

            Cluster c1(numDims);
            std::cout << "Cluster c1(numDims);";
            std::cout << std::endl;

            double p1arr[] = {1,2,3,4};
            double p2arr[] = {2,3,4,5};
            double p3arr[] = {3,4,5,6};
            double p4arr[] = {4,5,6,7};

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p2arr[" << numDims << "] = ";
            testPtArr(numDims, p2arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p3arr[" << numDims << "] = ";
            testPtArr(numDims, p3arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p4arr[" << numDims << "] = ";
            testPtArr(numDims, p4arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            Point p2(numDims, p2arr);
            std::cout << "Point p2(" << numDims << ", p2arr);";

            std::cout << std::endl;
            Point p3(numDims, p3arr);
            std::cout << "Point p3(" << numDims << ", p3arr);";

            std::cout << std::endl;
            Point p4(numDims, p4arr);
            std::cout << "Point p4(" << numDims << ", p4arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            std::cout << std::endl;
            c1.add(p2);
            std::cout << "c1.add(p2);";

            std::cout << std::endl;
            c1.add(p3);
            std::cout << "c1.add(p3);";

            std::cout << std::endl;
            c1.add(p4);
            std::cout << "c1.add(p4);";

            testResult();
            std::cout << std::endl << "c1.intraClusterDistance(): " << c1.intraClusterDistance();

            testCheck();
            std::cout << std::endl << "c1.intraClusterDistance(): 20";

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            numDims = 4;   // Dimensions in test arrays (don't go below 2)
            testTitle(testNum++, header, "Centroid Operations - interClusterDistance()");

            Cluster c1(numDims);
            std::cout << "Cluster c1(numDims);";
            std::cout << std::endl;

            Cluster c2(numDims);
            std::cout << "Cluster c1(numDims);";
            std::cout << std::endl;

            double p1arr[] = {1,2,3,4};
            double p2arr[] = {2,3,4,5};
            double p3arr[] = {3,4,5,6};
            double p4arr[] = {4,5,6,7};

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p2arr[" << numDims << "] = ";
            testPtArr(numDims, p2arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p3arr[" << numDims << "] = ";
            testPtArr(numDims, p3arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p4arr[" << numDims << "] = ";
            testPtArr(numDims, p4arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            Point p2(numDims, p2arr);
            std::cout << "Point p2(" << numDims << ", p2arr);";

            std::cout << std::endl;
            Point p3(numDims, p3arr);
            std::cout << "Point p3(" << numDims << ", p3arr);";

            std::cout << std::endl;
            Point p4(numDims, p4arr);
            std::cout << "Point p4(" << numDims << ", p4arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            std::cout << std::endl;
            c1.add(p2);
            std::cout << "c1.add(p2);";

            std::cout << std::endl;
            c2.add(p3);
            std::cout << "c2.add(p3);";

            std::cout << std::endl;
            c2.add(p4);
            std::cout << "c2.add(p4);";

            testResult();
            std::cout << std::endl << "c1.interClusterDistance(): " << interClusterDistance(c1,c2);

            testCheck();
            std::cout << std::endl << "c1.interClusterDistance(): 8";

            testClose();
        }
////////////////////////////// Centroid Operations - Centroid Operations - Centroid Operations /////////////////////////
        {
            numDims = 4;   // Dimensions in test arrays (don't go below 2)
            testTitle(testNum++, header, "Centroid Operations - getClusterEdges()");

            Cluster c1(numDims);
            std::cout << "Cluster c1(numDims);";
            std::cout << std::endl;

            double p1arr[] = {1,2,3,4};
            double p2arr[] = {2,3,4,5};
            double p3arr[] = {3,4,5,6};
            double p4arr[] = {4,5,6,7};

            std::cout << "double p1arr[" << numDims << "] = ";
            testPtArr(numDims, p1arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p2arr[" << numDims << "] = ";
            testPtArr(numDims, p2arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p3arr[" << numDims << "] = ";
            testPtArr(numDims, p3arr, "{", "};");

            std::cout << std::endl;
            std::cout << "double p4arr[" << numDims << "] = ";
            testPtArr(numDims, p4arr, "{", "};");

            std::cout << std::endl;
            Point p1(numDims, p1arr);
            std::cout << "Point p1(" << numDims << ", p1arr);";

            std::cout << std::endl;
            Point p2(numDims, p2arr);
            std::cout << "Point p2(" << numDims << ", p2arr);";

            std::cout << std::endl;
            Point p3(numDims, p3arr);
            std::cout << "Point p3(" << numDims << ", p3arr);";

            std::cout << std::endl;
            Point p4(numDims, p4arr);
            std::cout << "Point p4(" << numDims << ", p4arr);";

            std::cout << std::endl;
            c1.add(p1);
            std::cout << "c1.add(p1);";

            std::cout << std::endl;
            c1.add(p2);
            std::cout << "c1.add(p2);";

            std::cout << std::endl;
            c1.add(p3);
            std::cout << "c1.add(p3);";

            std::cout << std::endl;
            c1.add(p4);
            std::cout << "c1.add(p4);";

            testResult();
            std::cout << std::endl << "c1.getClusterEdges(): " << c1.getClusterEdges();

            testCheck();
            std::cout << std::endl << "c1.getClusterEdges(): 6";

            testClose();
        }
        testSectionClose(header);
    }
示例#23
0
int main(int argc, char const *argv[])
{
	for( int i = 1; i < argc; i++ )
	{
		if( strncmp( argv[i], "--vutpp:", 8 ) == 0 )
		{
			std::string strVutppParam = argv[i] + 8;
			const size_t seperator = strVutppParam.find( ',' );
			if( seperator == std::string::npos )
				return -1;

			HANDLE readPipe, writePipe;
			sscanf( strVutppParam.substr( 0, seperator ).c_str(), "%d", &readPipe );
			sscanf( strVutppParam.substr( seperator+1 ).c_str(), "%d", &writePipe );

			char readBuffer[1024], writeBuffer[1024];

			DWORD dwSize = 0;
			strcpy( writeBuffer, "connect" );
			if( WriteFile( writePipe, writeBuffer, 1024, &dwSize, NULL ) == false || dwSize != 1024 )
				return -1;

			while( true )
			{
				if( ReadFile( readPipe, readBuffer, 1024, &dwSize, NULL ) == false || dwSize != 1024 )
					return -1;

				if( strncmp( readBuffer, "__VUTPP_FINISH__", 16 ) == 0 )
					break;

				const char* pSeperator = strchr( readBuffer, ',' );
				std::string suiteName( readBuffer, pSeperator - readBuffer ), testName( pSeperator+1 );
				testName += "Test";

				bool bRun = false;

				Test* pTest = TestRegistry::Tests();
				while( pTest != NULL )
				{
					if( strcmp( pTest->name(), testName.c_str() ) == 0 )
					{
						VUTPP_Result testResult( writePipe );
						pTest->run(testResult);

						strcpy( writeBuffer, "-1," );
						bRun = true;
						if( WriteFile( writePipe, writeBuffer, 1024, &dwSize, NULL ) == false || dwSize != 1024 )
							return -1;
					}

					pTest = pTest->getNext();
				}

				if( bRun == false )
				{
					sprintf( writeBuffer, "%d,,%s", -2, "can't find test" );
					if( WriteFile( writePipe, writeBuffer, 1024, &dwSize, NULL ) == false || dwSize != 1024 )
						return -1;
				}
			}

			return 0;
		}
	}

	TestResult tr;
	return TestRegistry::runAllTests(tr);
}