File indexing completed on 2026-04-09 07:49:15
0001
0002
0003 #include "SBitSet.h"
0004
0005 struct SBitSet_test
0006 {
0007 static int value();
0008 static int Value();
0009 static int Create();
0010 static int Roundtrip();
0011 static int Main();
0012 };
0013
0014
0015 int SBitSet_test::value()
0016 {
0017 SBitSet* bs = SBitSet::Create( 8, "VIZM" , "t" );
0018
0019 std::cout << bs->desc() << std::endl ;
0020
0021 uint32_t val = bs->value<uint32_t>();
0022 std::cout << std::hex << val << std::dec << std::endl ;
0023
0024 return 0 ;
0025 }
0026
0027
0028 int SBitSet_test::Value()
0029 {
0030 std::vector<std::string> specs = {
0031 "t",
0032 "t0",
0033 "t0," ,
0034 "t0,1" ,
0035 "t0,1,2",
0036 "t5",
0037 "",
0038 "0",
0039 "0,1",
0040 "0,1,2",
0041 "5,",
0042 "5",
0043 "16",
0044 "16," } ;
0045
0046 for(unsigned i=0 ; i < specs.size() ; i++)
0047 {
0048 const char* spec = specs[i].c_str() ;
0049 uint32_t value = SBitSet::Value<uint32_t>( 32, spec );
0050 SBitSet* bs = SBitSet::Create<uint32_t>(value) ;
0051
0052 std::cout
0053 << " spec " << std::setw(10) << spec
0054 << " value " << std::setw(10) << std::hex << value << std::dec
0055 << " bs " << bs->desc()
0056 << "\n"
0057 ;
0058 }
0059 return 0 ;
0060 }
0061
0062 int SBitSet_test::Create()
0063 {
0064 uint32_t value = 0xdeadbeef ;
0065 SBitSet* bs = SBitSet::Create<uint32_t>( value );
0066 std::cout << bs->desc() ;
0067 return 0 ;
0068 }
0069
0070 int SBitSet_test::Roundtrip()
0071 {
0072 uint32_t value = 0xdeadbeef ;
0073 SBitSet* bs0 = SBitSet::Create<uint32_t>( value );
0074
0075 std::vector<unsigned char> bytes ;
0076 bs0->serialize(bytes);
0077
0078 SBitSet* bs1 = SBitSet::CreateFromBytes(bytes);
0079 int cmp = bs0->compare(bs1);
0080
0081 std::cout
0082 << "SBitSet_test::Roundtrip"
0083 << "\n"
0084 << " bs0 " << bs0->desc() << "\n"
0085 << " bs1 " << bs1->desc() << "\n"
0086 << " bytes.size " << bytes.size()
0087 << " cmp " << cmp
0088 << "\n"
0089 ;
0090
0091 return cmp ;
0092 }
0093
0094
0095
0096
0097 int SBitSet_test::Main()
0098 {
0099 const char* TEST = ssys::getenvvar("TEST","Create");
0100 bool all = strcmp(TEST,"ALL") == 0 ;
0101 int rc = 0 ;
0102 if(all||0==strcmp(TEST,"value")) rc += value();
0103 if(all||0==strcmp(TEST,"Value")) rc += Value();
0104 if(all||0==strcmp(TEST,"Create")) rc += Create();
0105 if(all||0==strcmp(TEST,"Roundtrip")) rc += Roundtrip();
0106
0107 return rc ;
0108 }
0109
0110 int main()
0111 {
0112 return SBitSet_test::Main();
0113 }