Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : #include "estd/bitset.h" 4 : 5 : #include <gtest/gtest.h> 6 : 7 : namespace 8 : { 9 1 : void example_construct() 10 : { 11 : // EXAMPLE_START construct 12 1 : ::estd::bitset<16> a(0x0000); 13 1 : a[0] = 1; // Bitset now equals 0x0001 14 1 : ::estd::bitset<1000> b; // Bitsets can have arbitrarily large size 15 : // EXAMPLE_END construct 16 1 : } 17 : 18 1 : void example_operators() 19 : { 20 : // EXAMPLE_START operators 21 1 : ::estd::bitset<16> a(0x00FF); 22 1 : ::estd::bitset<16> b(0x0F0F); 23 1 : a = ~a; // a now equals 0xFF00 24 1 : a &= b; // a now equals 0x0F00 25 1 : a = b | ::estd::bitset<16>(0xFF00); // a now equals 0xFF0F 26 : // EXAMPLE_END operators 27 : } 28 : 29 1 : void example_element_access() 30 : { 31 : // EXAMPLE_START element_access 32 1 : ::estd::bitset<16> a(0x0000); 33 1 : a[0] = true; // a now equals 0x0001 34 1 : a[4].flip(); // a now equals 0x0011 35 1 : a[0] = ~a[0]; // a now equals 0x0010 36 : // EXAMPLE_END element_access 37 1 : } 38 : 39 1 : void example_operations() 40 : { 41 : // EXAMPLE_START operations 42 1 : ::estd::bitset<16> a; // a equals 0x0000 43 1 : a.any(); // False 44 1 : a.all(); // False 45 1 : a.none(); // True 46 : 47 1 : a.set(4); // a equals 0x0010 48 1 : a.any(); // True 49 1 : a.all(); // False 50 1 : a.none(); // False 51 : 52 1 : a.value(); // returns 2 53 1 : a.flip(); // a equals 0xFFEF 54 1 : a.test(0); // True 55 : 56 1 : a.set(); // a equals 0xFFFF 57 1 : a.any(); // True 58 1 : a.all(); // True 59 1 : a.none(); // False 60 : 61 1 : a.reset(); // a equals 0x0000 62 1 : a.size(); // returns 16 63 : // EXAMPLE_END operations 64 1 : } 65 : 66 : } // namespace 67 : 68 3 : TEST(bitset_test, run_examples) 69 : { 70 1 : example_construct(); 71 1 : example_operators(); 72 1 : example_element_access(); 73 1 : example_operations(); 74 1 : }