Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:15

0001 // ~/o/sysrap/tests/SBitSet_test.sh
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 }