3 #include "stg/admin_conf.h"
 
   9             MIX2 = 0x06C6, // 2103210
 
  11             MIX3 = 0x1B1B, // 3210321
 
  13             MIX1 = 0x24E4, // 0123012
 
  18     typedef test_group<priv_data> tg;
 
  19     tg priv_test_group("PRIV tests group");
 
  21     typedef tg::object testobject;
 
  25     void testobject::test<1>()
 
  27         set_test_name("Check default constructor");
 
  31         ensure("zero.userStat == 0", zero.userStat == 0);
 
  32         ensure("zero.userConf == 0", zero.userConf == 0);
 
  33         ensure("zero.userCash == 0", zero.userCash == 0);
 
  34         ensure("zero.userPasswd == 0", zero.userPasswd == 0);
 
  35         ensure("zero.userAddDel == 0", zero.userAddDel == 0);
 
  36         ensure("zero.adminChg == 0", zero.adminChg == 0);
 
  37         ensure("zero.tariffChg == 0", zero.tariffChg == 0);
 
  39         ensure("zero.ToInt() == 0", zero.ToInt() == 0);
 
  44     void testobject::test<2>()
 
  46         set_test_name("Check uint16_t conversions");
 
  48         for (uint16_t i = 0; i < 4; ++i) {
 
  50             // 'i' is extra trash in high bits
 
  52             PRIV priv1(ONES | (i << 0x0E)); // All 1
 
  54             ensure_equals("priv1.userStat == 1", priv1.userStat, 1);
 
  55             ensure_equals("priv1.userConf == 1", priv1.userConf, 1);
 
  56             ensure_equals("priv1.userCash == 1", priv1.userCash, 1);
 
  57             ensure_equals("priv1.userPasswd == 1", priv1.userPasswd, 1);
 
  58             ensure_equals("priv1.userAddDel == 1", priv1.userAddDel, 1);
 
  59             ensure_equals("priv1.adminChg == 1", priv1.adminChg, 1);
 
  60             ensure_equals("priv1.tariffChg == 1", priv1.tariffChg, 1);
 
  62             ensure_equals("priv1.ToInt() == 0x1555", priv1.ToInt(), static_cast<uint16_t>(ONES));
 
  64             PRIV priv2(TWOS | (i << 0x0E)); // All 2
 
  66             ensure_equals("priv2.userStat == 2", priv2.userStat, 2);
 
  67             ensure_equals("priv2.userConf == 2", priv2.userConf, 2);
 
  68             ensure_equals("priv2.userCash == 2", priv2.userCash, 2);
 
  69             ensure_equals("priv2.userPasswd == 2", priv2.userPasswd, 2);
 
  70             ensure_equals("priv2.userAddDel == 2", priv2.userAddDel, 2);
 
  71             ensure_equals("priv2.adminChg == 2", priv2.adminChg, 2);
 
  72             ensure_equals("priv2.tariffChg == 2", priv2.tariffChg, 2);
 
  74             ensure_equals("priv2.ToInt() = 0x2AAA", priv2.ToInt(), static_cast<uint16_t>(TWOS));
 
  76             PRIV priv3(THREES | (i << 0x0E)); // All 3
 
  78             ensure_equals("priv3.userStat == 3", priv3.userStat, 3);
 
  79             ensure_equals("priv3.userConf == 3", priv3.userConf, 3);
 
  80             ensure_equals("priv3.userCash == 3", priv3.userCash, 3);
 
  81             ensure_equals("priv3.userPasswd == 3", priv3.userPasswd, 3);
 
  82             ensure_equals("priv3.userAddDel == 3", priv3.userAddDel, 3);
 
  83             ensure_equals("priv3.adminChg == 3", priv3.adminChg, 3);
 
  84             ensure_equals("priv3.tariffChg == 3", priv3.tariffChg, 3);
 
  86             ensure_equals("priv2.ToInt() = 0x3FFF", priv3.ToInt(), static_cast<uint16_t>(THREES));
 
  88             PRIV pm1(MIX1 | (i << 0x0E)); // 0123012
 
  90             ensure_equals("pm1.userStat == 0", pm1.userStat, 0);
 
  91             ensure_equals("pm1.userConf == 1", pm1.userConf, 1);
 
  92             ensure_equals("pm1.userCash == 2", pm1.userCash, 2);
 
  93             ensure_equals("pm1.userPasswd == 3", pm1.userPasswd, 3);
 
  94             ensure_equals("pm1.userAddDel == 0", pm1.userAddDel, 0);
 
  95             ensure_equals("pm1.adminChg == 1", pm1.adminChg, 1);
 
  96             ensure_equals("pm1.tariffChg == 2", pm1.tariffChg, 2);
 
  98             ensure_equals("pm1.ToInt() = 0x24E4", pm1.ToInt(), static_cast<uint16_t>(MIX1));
 
 100             PRIV pm2(MIX2 | (i << 0x0E)); // 0123012
 
 102             ensure_equals("pm2.userStat == 2", pm2.userStat, 2);
 
 103             ensure_equals("pm2.userConf == 1", pm2.userConf, 1);
 
 104             ensure_equals("pm2.userCash == 0", pm2.userCash, 0);
 
 105             ensure_equals("pm2.userPasswd == 3", pm2.userPasswd, 3);
 
 106             ensure_equals("pm2.userAddDel == 2", pm2.userAddDel, 2);
 
 107             ensure_equals("pm2.adminChg == 1", pm2.adminChg, 1);
 
 108             ensure_equals("pm2.tariffChg == 0", pm2.tariffChg, 0);
 
 110             ensure_equals("pm2.ToInt() = 0x06C6", pm2.ToInt(), static_cast<uint16_t>(MIX2));
 
 112             PRIV pm3(MIX3 | (i << 0x0E)); // 3210321
 
 114             ensure_equals("pm3.userStat == 3", pm3.userStat, 3);
 
 115             ensure_equals("pm3.userConf == 2", pm3.userConf, 2);
 
 116             ensure_equals("pm3.userCash == 1", pm3.userCash, 1);
 
 117             ensure_equals("pm3.userPasswd == 0", pm3.userPasswd, 0);
 
 118             ensure_equals("pm3.userAddDel == 3", pm3.userAddDel, 3);
 
 119             ensure_equals("pm3.adminChg == 2", pm3.adminChg, 2);
 
 120             ensure_equals("pm3.tariffChg == 1", pm3.tariffChg, 1);
 
 122             ensure_equals("pm3.ToInt() = 0x1B1B", pm3.ToInt(), static_cast<uint16_t>(MIX3));
 
 130     void testobject::test<3>()
 
 132         set_test_name("Check explicit uint16_t conversions");
 
 134         for (uint16_t i = 0; i < 4; ++i) {
 
 136             // 'i' is extra trash in high bits
 
 139             priv1.FromInt(ONES | (i << 0x0E)); // All 1
 
 141             ensure_equals("priv1.userStat == 1", priv1.userStat, 1);
 
 142             ensure_equals("priv1.userConf == 1", priv1.userConf, 1);
 
 143             ensure_equals("priv1.userCash == 1", priv1.userCash, 1);
 
 144             ensure_equals("priv1.userPasswd == 1", priv1.userPasswd, 1);
 
 145             ensure_equals("priv1.userAddDel == 1", priv1.userAddDel, 1);
 
 146             ensure_equals("priv1.adminChg == 1", priv1.adminChg, 1);
 
 147             ensure_equals("priv1.tariffChg == 1", priv1.tariffChg, 1);
 
 149             ensure_equals("priv1.ToInt() == 0x1555", priv1.ToInt(), static_cast<uint16_t>(ONES));
 
 152             priv2.FromInt(TWOS | (i << 0x0E)); // All 2
 
 154             ensure_equals("priv2.userStat == 2", priv2.userStat, 2);
 
 155             ensure_equals("priv2.userConf == 2", priv2.userConf, 2);
 
 156             ensure_equals("priv2.userCash == 2", priv2.userCash, 2);
 
 157             ensure_equals("priv2.userPasswd == 2", priv2.userPasswd, 2);
 
 158             ensure_equals("priv2.userAddDel == 2", priv2.userAddDel, 2);
 
 159             ensure_equals("priv2.adminChg == 2", priv2.adminChg, 2);
 
 160             ensure_equals("priv2.tariffChg == 2", priv2.tariffChg, 2);
 
 162             ensure_equals("priv2.ToInt() = 0x2AAA", priv2.ToInt(), static_cast<uint16_t>(TWOS));
 
 165             priv3.FromInt(THREES | (i << 0x0E)); // All 3
 
 167             ensure_equals("priv3.userStat == 3", priv3.userStat, 3);
 
 168             ensure_equals("priv3.userConf == 3", priv3.userConf, 3);
 
 169             ensure_equals("priv3.userCash == 3", priv3.userCash, 3);
 
 170             ensure_equals("priv3.userPasswd == 3", priv3.userPasswd, 3);
 
 171             ensure_equals("priv3.userAddDel == 3", priv3.userAddDel, 3);
 
 172             ensure_equals("priv3.adminChg == 3", priv3.adminChg, 3);
 
 173             ensure_equals("priv3.tariffChg == 3", priv3.tariffChg, 3);
 
 175             ensure_equals("priv2.ToInt() = 0x3FFF", priv3.ToInt(), static_cast<uint16_t>(THREES));
 
 178             pm1.FromInt(MIX1 | (i << 0x0E)); // 0123012
 
 180             ensure_equals("pm1.userStat == 0", pm1.userStat, 0);
 
 181             ensure_equals("pm1.userConf == 1", pm1.userConf, 1);
 
 182             ensure_equals("pm1.userCash == 2", pm1.userCash, 2);
 
 183             ensure_equals("pm1.userPasswd == 3", pm1.userPasswd, 3);
 
 184             ensure_equals("pm1.userAddDel == 0", pm1.userAddDel, 0);
 
 185             ensure_equals("pm1.adminChg == 1", pm1.adminChg, 1);
 
 186             ensure_equals("pm1.tariffChg == 2", pm1.tariffChg, 2);
 
 188             ensure_equals("pm1.ToInt() = 0x24E4", pm1.ToInt(), static_cast<uint16_t>(MIX1));
 
 191             pm2.FromInt(MIX2 | (i << 0x0E)); // 0123012
 
 193             ensure_equals("pm2.userStat == 2", pm2.userStat, 2);
 
 194             ensure_equals("pm2.userConf == 1", pm2.userConf, 1);
 
 195             ensure_equals("pm2.userCash == 0", pm2.userCash, 0);
 
 196             ensure_equals("pm2.userPasswd == 3", pm2.userPasswd, 3);
 
 197             ensure_equals("pm2.userAddDel == 2", pm2.userAddDel, 2);
 
 198             ensure_equals("pm2.adminChg == 1", pm2.adminChg, 1);
 
 199             ensure_equals("pm2.tariffChg == 0", pm2.tariffChg, 0);
 
 201             ensure_equals("pm2.ToInt() = 0x06C6", pm2.ToInt(), static_cast<uint16_t>(MIX2));
 
 204             pm3.FromInt(MIX3 | (i << 0x0E)); // 3210321
 
 206             ensure_equals("pm3.userStat == 3", pm3.userStat, 3);
 
 207             ensure_equals("pm3.userConf == 2", pm3.userConf, 2);
 
 208             ensure_equals("pm3.userCash == 1", pm3.userCash, 1);
 
 209             ensure_equals("pm3.userPasswd == 0", pm3.userPasswd, 0);
 
 210             ensure_equals("pm3.userAddDel == 3", pm3.userAddDel, 3);
 
 211             ensure_equals("pm3.adminChg == 2", pm3.adminChg, 2);
 
 212             ensure_equals("pm3.tariffChg == 1", pm3.tariffChg, 1);
 
 214             ensure_equals("pm3.ToInt() = 0x1B1B", pm3.ToInt(), static_cast<uint16_t>(MIX3));