mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	Summary: Add one gtest-style test. Test Plan: run on bot Reviewers: samsonov Reviewed By: samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7287 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227639 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "FuzzerInternal.h"
 | 
						|
#include "gtest/gtest.h"
 | 
						|
#include <set>
 | 
						|
 | 
						|
// For now, have TestOneInput just to make it link.
 | 
						|
// Later we may want to make unittests that actually call TestOneInput.
 | 
						|
extern "C" void TestOneInput(const uint8_t *Data, size_t Size) {
 | 
						|
  abort();
 | 
						|
}
 | 
						|
 | 
						|
TEST(Fuzzer, CrossOver) {
 | 
						|
  using namespace fuzzer;
 | 
						|
  Unit A({0, 1, 2}), B({5, 6, 7});
 | 
						|
  Unit C;
 | 
						|
  Unit Expected[] = {
 | 
						|
       { 0 },
 | 
						|
       { 0, 1 },
 | 
						|
       { 0, 5 },
 | 
						|
       { 0, 1, 2 },
 | 
						|
       { 0, 1, 5 },
 | 
						|
       { 0, 5, 1 },
 | 
						|
       { 0, 5, 6 },
 | 
						|
       { 0, 1, 2, 5 },
 | 
						|
       { 0, 1, 5, 2 },
 | 
						|
       { 0, 1, 5, 6 },
 | 
						|
       { 0, 5, 1, 2 },
 | 
						|
       { 0, 5, 1, 6 },
 | 
						|
       { 0, 5, 6, 1 },
 | 
						|
       { 0, 5, 6, 7 },
 | 
						|
       { 0, 1, 2, 5, 6 },
 | 
						|
       { 0, 1, 5, 2, 6 },
 | 
						|
       { 0, 1, 5, 6, 2 },
 | 
						|
       { 0, 1, 5, 6, 7 },
 | 
						|
       { 0, 5, 1, 2, 6 },
 | 
						|
       { 0, 5, 1, 6, 2 },
 | 
						|
       { 0, 5, 1, 6, 7 },
 | 
						|
       { 0, 5, 6, 1, 2 },
 | 
						|
       { 0, 5, 6, 1, 7 },
 | 
						|
       { 0, 5, 6, 7, 1 },
 | 
						|
       { 0, 1, 2, 5, 6, 7 },
 | 
						|
       { 0, 1, 5, 2, 6, 7 },
 | 
						|
       { 0, 1, 5, 6, 2, 7 },
 | 
						|
       { 0, 1, 5, 6, 7, 2 },
 | 
						|
       { 0, 5, 1, 2, 6, 7 },
 | 
						|
       { 0, 5, 1, 6, 2, 7 },
 | 
						|
       { 0, 5, 1, 6, 7, 2 },
 | 
						|
       { 0, 5, 6, 1, 2, 7 },
 | 
						|
       { 0, 5, 6, 1, 7, 2 },
 | 
						|
       { 0, 5, 6, 7, 1, 2 }
 | 
						|
  };
 | 
						|
  for (size_t Len = 1; Len < 8; Len++) {
 | 
						|
    std::set<Unit> FoundUnits, ExpectedUnitsWitThisLength;
 | 
						|
    for (int Iter = 0; Iter < 3000; Iter++) {
 | 
						|
      CrossOver(A, B, &C, Len);
 | 
						|
      FoundUnits.insert(C);
 | 
						|
    }
 | 
						|
    for (const Unit &U : Expected)
 | 
						|
      if (U.size() <= Len)
 | 
						|
        ExpectedUnitsWitThisLength.insert(U);
 | 
						|
    EXPECT_EQ(ExpectedUnitsWitThisLength, FoundUnits);
 | 
						|
  }
 | 
						|
}
 |