You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							114 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							114 lines
						
					
					
						
							2.2 KiB
						
					
					
				
								#include "gtest/gtest.h"
							 | 
						|
								#include "src/storage/BitVector.h"
							 | 
						|
								#include "src/exceptions/InvalidArgumentException.h"
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, GetSetTest) {
							 | 
						|
									storm::storage::BitVector *bv = NULL;
							 | 
						|
									ASSERT_NO_THROW(bv = new storm::storage::BitVector(32));
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										bv->set(i, i % 2 == 0);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_EQ(bv->get(i), i % 2 == 0);
							 | 
						|
									}
							 | 
						|
									delete bv;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, InitialZeroTest) {
							 | 
						|
									storm::storage::BitVector bvA(32);
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_FALSE(bvA.get(i));
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, ResizeTest) {
							 | 
						|
									storm::storage::BitVector bvA(32);
							 | 
						|
									
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										bvA.set(i, true);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									bvA.resize(70);
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_TRUE(bvA.get(i));
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									bool result;
							 | 
						|
									for (int i = 32; i < 70; ++i) {
							 | 
						|
										result = true;
							 | 
						|
										ASSERT_NO_THROW(result = bvA.get(i));
							 | 
						|
										ASSERT_FALSE(result);
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, OperatorNotTest) {
							 | 
						|
									storm::storage::BitVector bvA(32);
							 | 
						|
									storm::storage::BitVector bvB(32);
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										bvA.set(i, i % 2 == 0);
							 | 
						|
										bvB.set(i, i % 2 == 1);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									storm::storage::BitVector bvN = ~bvB;
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_EQ(bvA.get(i), bvN.get(i));
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, OperatorAndTest) {
							 | 
						|
									storm::storage::BitVector bvA(32);
							 | 
						|
									storm::storage::BitVector bvB(32);
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										bvA.set(i, i % 2 == 0);
							 | 
						|
										bvB.set(i, i % 2 == 1);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									storm::storage::BitVector bvN = bvA & bvB;
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_FALSE(bvN.get(i));
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, OperatorOrTest) {
							 | 
						|
									storm::storage::BitVector bvA(32);
							 | 
						|
									storm::storage::BitVector bvB(32);
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										bvA.set(i, i % 2 == 0);
							 | 
						|
										bvB.set(i, i % 2 == 1);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									storm::storage::BitVector bvN = bvA | bvB;
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_TRUE(bvN.get(i));
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								TEST(BitVectorTest, OperatorXorTest) {
							 | 
						|
									storm::storage::BitVector bvA(32);
							 | 
						|
									storm::storage::BitVector bvB(32);
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										bvA.set(i, true);
							 | 
						|
										bvB.set(i, i % 2 == 1);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									storm::storage::BitVector bvN = bvA ^ bvB;
							 | 
						|
									storm::storage::BitVector bvO = ~bvB;
							 | 
						|
									storm::storage::BitVector bvP = bvA ^ bvA;
							 | 
						|
								
							 | 
						|
									for (int i = 0; i < 32; ++i) {
							 | 
						|
										ASSERT_EQ(bvN.get(i), bvO.get(i));
							 | 
						|
										// A XOR A = 0
							 | 
						|
										ASSERT_FALSE(bvP.get(i));
							 | 
						|
									}
							 | 
						|
								}
							 |