示例#1
0
        public void FullCases()
        {
            cases = new StrTest[5];

            var c = new StrTest();

            c.name           = "Input coins overflow";
            c.err            = SKY_ERROR;
            c.inUxs          = new ux[2];
            c.inUxs[0].coins = (ulong)(ulong.MaxValue - 1e6 + 1);
            c.inUxs[0].hours = 10;
            c.inUxs[1].coins = (ulong)1e6;
            c.inUxs[1].hours = 0;
            c.outUxs         = new ux[0];
            c.headTime       = 0;
            cases[0]         = c;

            c                 = new StrTest();
            c.name            = "Output coins overflow";
            c.err             = SKY_ERROR;
            c.inUxs           = new ux[1];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.outUxs          = new ux[2];
            c.outUxs[0].coins = (ulong)(ulong.MaxValue - 10e6 + 1);
            c.outUxs[0].coins = 0;
            c.outUxs[1].coins = (ulong)20e6;
            c.outUxs[1].hours = 1;
            c.headTime        = 0;
            cases[1]          = c;

            c      = new StrTest();
            c.name = "Insufficient coins";
            c.err  = SKY_ERROR;
            // c.headTime = 0;
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[2];
            c.outUxs[0].coins = (ulong)20e6;
            c.outUxs[0].coins = 1;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 1;
            cases[2]          = c;

            c                 = new StrTest();
            c.name            = "Destroyed coins";
            c.err             = SKY_ERROR;
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[2];
            c.outUxs[0].coins = (ulong)5e6;
            c.outUxs[0].coins = 1;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 1;
            c.headTime        = 0;
            cases[3]          = c;

            c                 = new StrTest();
            c.name            = "valid";
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[3];
            c.outUxs[0].coins = (ulong)10e6;
            c.outUxs[0].hours = 11;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 1;
            c.outUxs[2].coins = (ulong)5e6;
            c.outUxs[2].hours = 0;
            c.headTime        = 0;
            c.err             = SKY_OK;
            cases[4]          = c;
        }
示例#2
0
        public void FullCases2()
        {
            cases = new StrTest[7];
            var c = new StrTest();

            c.name           = "Input coins overflow";
            c.err            = SKY_ERROR;
            c.inUxs          = new ux[2];
            c.inUxs[0].hours = (ulong)(ulong.MaxValue - 1e6 + 1);
            c.inUxs[0].coins = (ulong)3e6;
            c.inUxs[1].coins = (ulong)1e6;
            c.inUxs[1].hours = (ulong)1e6;
            c.outUxs         = new ux[0];
            cases[0]         = c;

            c                 = new StrTest();
            c.name            = "Insufficient coin hours";
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[2];
            c.outUxs[0].coins = (ulong)15e6;
            c.outUxs[0].hours = 10;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 11;
            c.headTime        = 0;
            c.err             = SKY_ERROR;
            cases[1]          = c;

            c                 = new StrTest();
            c.name            = "coin hours time calculation overflow";
            c.err             = SKY_ERROR;
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[3];
            c.outUxs[0].coins = (ulong)10e6;
            c.outUxs[0].hours = 11;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 1;
            c.outUxs[2].coins = (ulong)5e6;
            c.outUxs[2].hours = 0;
            c.headTime        = ulong.MaxValue;
            cases[2]          = c;

            c                 = new StrTest();
            c.name            = "Invalid (coin hours overflow when adding earned hours, which is treated as 0, and now enough coin hours)";
            c.err             = SKY_ERROR;
            c.inUxs           = new ux[1];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = ulong.MaxValue;
            c.outUxs          = new ux[1];
            c.outUxs[0].coins = (ulong)10e6;
            c.outUxs[0].hours = 1;
            c.headTime        = (long)1e6;
            cases[3]          = c;

            c                 = new StrTest();
            c.name            = "Valid (coin hours overflow when adding earned hours, which is treated as 0, but not sending any hours)";
            c.inUxs           = new ux[1];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = ulong.MaxValue;
            c.outUxs          = new ux[1];
            c.outUxs[0].coins = (ulong)10e6;
            c.outUxs[0].hours = 0;
            c.headTime        = (long)1e6;
            cases[4]          = c;

            c                 = new StrTest();
            c.name            = "Valid (base inputs have insufficient coin hours, but have sufficient after adjusting coinhours by headTime)";
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[2];
            c.outUxs[0].coins = (ulong)15e6;
            c.outUxs[0].hours = 10;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 11;
            c.headTime        = 1492707255;
            cases[5]          = c;

            c                 = new StrTest();
            c.name            = "valid";
            c.inUxs           = new ux[2];
            c.inUxs[0].coins  = (ulong)10e6;
            c.inUxs[0].hours  = 10;
            c.inUxs[1].coins  = (ulong)15e6;
            c.inUxs[1].hours  = 10;
            c.outUxs          = new ux[3];
            c.outUxs[0].coins = (ulong)10e6;
            c.outUxs[0].hours = 11;
            c.outUxs[1].coins = (ulong)10e6;
            c.outUxs[1].hours = 1;
            c.outUxs[2].coins = (ulong)5e6;
            c.outUxs[2].hours = 0;
            cases[6]          = c;
        }
        public void FullCases()
        {
            ulong headTime = 1000;
            ulong nextTime = (headTime + 3600); //1 hour later

            var cases = new StrTest();

            cases.fee          = 5;
            cases.outs         = new ulong[1];
            cases.outs[0]      = 5;
            cases.ins          = new uxInput[1];
            cases.ins[0].time  = headTime;
            cases.ins[0].coins = (ulong)10e6;
            cases.ins[0].hours = (ulong)10;
            cases.headTime     = headTime;
            ListCases[0]       = cases;

            cases              = new StrTest();
            cases.fee          = 0;
            cases.outs         = new ulong[3];
            cases.outs[0]      = 5;
            cases.outs[1]      = 7;
            cases.outs[2]      = 3;
            cases.ins          = new uxInput[2];
            cases.ins[0].time  = headTime;
            cases.ins[0].coins = (ulong)10e6;
            cases.ins[0].hours = (ulong)10;
            cases.ins[1].time  = headTime;
            cases.ins[1].coins = (ulong)10e6;
            cases.ins[1].hours = (ulong)5;
            cases.headTime     = headTime;
            ListCases[1]       = cases;

            cases              = new StrTest();
            cases.fee          = 8;
            cases.outs         = new ulong[2];
            cases.outs[0]      = 5;
            cases.outs[1]      = 10;
            cases.ins          = new uxInput[2];
            cases.ins[0].time  = nextTime;
            cases.ins[0].coins = (ulong)10e6;
            cases.ins[0].hours = (ulong)10;
            cases.ins[1].time  = headTime;
            cases.ins[1].coins = (ulong)8e6;
            cases.ins[1].hours = (ulong)5;
            cases.headTime     = nextTime;
            ListCases[2]       = cases;

            cases              = new StrTest();
            cases.err          = SKY_ErrTxnInsufficientCoinHours;
            cases.outs         = new ulong[3];
            cases.outs[0]      = 5;
            cases.outs[1]      = 10;
            cases.outs[2]      = 1;
            cases.ins          = new uxInput[2];
            cases.ins[0].time  = headTime;
            cases.ins[0].coins = (ulong)10e6;
            cases.ins[0].hours = (ulong)10;
            cases.ins[1].time  = headTime;
            cases.ins[1].coins = (ulong)8e6;
            cases.ins[1].hours = (ulong)5;
            cases.headTime     = headTime;
            ListCases[3]       = cases;

            cases              = new StrTest();
            cases.err          = SKY_ErrAddEarnedCoinHoursAdditionOverflow;
            cases.outs         = new ulong[1];
            cases.outs[0]      = 0;
            cases.ins          = new uxInput[2];
            cases.ins[0].time  = headTime;
            cases.ins[0].coins = (ulong)10e6;
            cases.ins[0].hours = (ulong)10;
            cases.ins[1].time  = headTime;
            cases.ins[1].coins = (ulong)10e6;
            cases.ins[1].hours = (ulong.MaxValue - 9);
            cases.headTime     = nextTime;
            ListCases[4]       = cases;

            cases              = new StrTest();
            cases.err          = SKY_ERROR;
            cases.outs         = new ulong[3];
            cases.outs[0]      = 0;
            cases.outs[1]      = 10;
            cases.outs[2]      = ulong.MaxValue - 9;
            cases.ins          = new uxInput[2];
            cases.ins[0].time  = headTime;
            cases.ins[0].coins = (ulong)10e6;
            cases.ins[0].hours = (ulong)10;
            cases.ins[1].time  = headTime;
            cases.ins[1].coins = (ulong)10e6;
            cases.ins[1].hours = (ulong)100;
            cases.headTime     = headTime;
            ListCases[5]       = cases;
        }