/* * Copyright (c) 2014, Oculus VR, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * RakNet License.txt file in the licenses directory of this source tree. An additional grant * of patent rights can be found in the RakNet Patents.txt file in the same directory. * */ #include "IncludeAllTests.h" #include "RakString.h" #include "DS_List.h" #include "Gets.h" using namespace RakNet; /* The TestInterface used in this was made to be able to be flexible when adding new test cases. While I do not use the paramslist, it is available. */ int main(int argc, char *argv[]) { int returnVal; char str[512]; int numTests=0; int testListSize=0; int passedTests=0; DataStructures::List testList;//Pointer list DataStructures::List testResultList;//A list of pass and/or fail and the error codes DataStructures::List testsToRun;//A list of tests to run DataStructures::List testsToRunIndexes;//A list of tests to run by index //Add all the tests to the test list testList.Push(new EightPeerTest(),_FILE_AND_LINE_); testList.Push(new MaximumConnectTest(),_FILE_AND_LINE_); testList.Push(new PeerConnectDisconnectWithCancelPendingTest(),_FILE_AND_LINE_); testList.Push(new PeerConnectDisconnectTest(),_FILE_AND_LINE_); testList.Push(new ManyClientsOneServerBlockingTest(),_FILE_AND_LINE_); testList.Push(new ManyClientsOneServerNonBlockingTest(),_FILE_AND_LINE_); testList.Push(new ManyClientsOneServerDeallocateBlockingTest(),_FILE_AND_LINE_); testList.Push(new ReliableOrderedConvertedTest(),_FILE_AND_LINE_); testList.Push(new DroppedConnectionConvertTest(),_FILE_AND_LINE_); testList.Push(new ComprehensiveConvertTest(),_FILE_AND_LINE_); testList.Push(new CrossConnectionConvertTest(),_FILE_AND_LINE_); testList.Push(new PingTestsTest(),_FILE_AND_LINE_); testList.Push(new OfflineMessagesConvertTest(),_FILE_AND_LINE_); testList.Push(new LocalIsConnectedTest(),_FILE_AND_LINE_); testList.Push(new SecurityFunctionsTest(),_FILE_AND_LINE_); testList.Push(new ConnectWithSocketTest(),_FILE_AND_LINE_); testList.Push(new SystemAddressAndGuidTest(),_FILE_AND_LINE_); testList.Push(new PacketAndLowLevelTestsTest(),_FILE_AND_LINE_); testList.Push(new MiscellaneousTestsTest(),_FILE_AND_LINE_); testListSize=testList.Size(); bool isVerbose=true; bool disallowTestToPause=false; DataStructures::List testcases; if (argc>1)//we have command line arguments { for (int p=1;p noParamsList; if (testsToRun.Size()==0&&testsToRunIndexes.Size()==0) { numTests=testListSize; for(int i=0;iGetTestName().C_String()); returnVal=testList[i]->RunTest(noParamsList,isVerbose,disallowTestToPause); testList[i]->DestroyPeers(); if (returnVal==0) {passedTests++;} else { printf("Test %s returned with error %s",testList[i]->GetTestName().C_String(),testList[i]->ErrorCodeToString(returnVal).C_String()); } } } if (testsToRun.Size()!=0)//If string arguments convert to indexes.Suggestion: if speed becoms an issue keep a sorted list and binary search it { int TestsToRunSize= testsToRun.Size(); RakString testName; for(int i=0;iGetTestName().StrICmp(testName)==0) { testsToRunIndexes.Push(j,_FILE_AND_LINE_); } } } } if (testsToRunIndexes.Size()!=0)//Run selected indexes { numTests=testsToRunIndexes.Size(); for(int i=0;iGetTestName().C_String()); returnVal=testList[testsToRunIndexes[i]]->RunTest(noParamsList,isVerbose,disallowTestToPause); testList[i]->DestroyPeers(); if (returnVal==0) {passedTests++;} else { printf("Test %s returned with error %s",testList[testsToRunIndexes[i]]->GetTestName().C_String(),testList[testsToRunIndexes[i]]->ErrorCodeToString(returnVal).C_String()); } } } } if (numTests>0) { printf("\nPassed %i out of %i tests.\n",passedTests,numTests); } printf("Press enter to continue \n"); Gets(str, sizeof(str)); //Cleanup int len=testList.Size(); for (int i=0;i