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; }
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; }