mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
New tests
This commit is contained in:
parent
47b268d509
commit
b9b9c229b4
@ -12,4 +12,3 @@ contract C
|
|||||||
// ----
|
// ----
|
||||||
// Warning 6328: (85-109): CHC: Assertion violation happens here.
|
// Warning 6328: (85-109): CHC: Assertion violation happens here.
|
||||||
// Warning 6328: (113-137): CHC: Assertion violation happens here.
|
// Warning 6328: (113-137): CHC: Assertion violation happens here.
|
||||||
// Warning 6328: (155-191): CHC: Assertion violation happens here.
|
|
||||||
|
@ -4,7 +4,23 @@ contract C
|
|||||||
{
|
{
|
||||||
function f() public payable {
|
function f() public payable {
|
||||||
assert(msg.data.length > 0);
|
assert(msg.data.length > 0);
|
||||||
|
// Fails since calldata size should be 4
|
||||||
|
assert(msg.data.length > 4);
|
||||||
|
// f's sig is 0x26121ff0
|
||||||
|
assert(msg.data[0] == 0x26);
|
||||||
|
assert(msg.data[1] == 0x12);
|
||||||
|
assert(msg.data[2] == 0x1f);
|
||||||
|
assert(msg.data[3] == 0xf0);
|
||||||
|
}
|
||||||
|
function g() public payable {
|
||||||
|
// g's sig is 0xe2179b8e
|
||||||
|
assert(msg.data[0] == 0xe2);
|
||||||
|
assert(msg.data[1] == 0x17);
|
||||||
|
assert(msg.data[2] == 0x9b);
|
||||||
|
// Fails
|
||||||
|
assert(msg.data[3] == 0x8f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning 6328: (79-106): CHC: Assertion violation happens here.
|
// Warning 6328: (153-180): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (500-527): CHC: Assertion violation happens here.
|
||||||
|
@ -2,9 +2,29 @@ pragma experimental SMTChecker;
|
|||||||
|
|
||||||
contract C
|
contract C
|
||||||
{
|
{
|
||||||
function f() public payable {
|
function f() public pure {
|
||||||
assert(msg.sig == 0x00000000);
|
assert(msg.sig == 0x00000000);
|
||||||
|
assert(msg.sig == 0x26121ff0);
|
||||||
|
fi();
|
||||||
|
gi();
|
||||||
|
}
|
||||||
|
function fi() internal pure {
|
||||||
|
assert(msg.sig == 0x26121ff0);
|
||||||
|
}
|
||||||
|
function g() public pure {
|
||||||
|
assert(msg.sig == 0xe2179b8e);
|
||||||
|
gi();
|
||||||
|
}
|
||||||
|
function gi() internal pure {
|
||||||
|
// Fails since f can also call gi in which case msg.sig == 0x26121ff0
|
||||||
|
assert(msg.sig == 0xe2179b8e);
|
||||||
|
}
|
||||||
|
function h() public pure {
|
||||||
|
// Fails since gi can also call h in which case msg.sig can be f() or g()
|
||||||
|
assert(msg.sig == 0xe2179b8e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
// Warning 6328: (79-108): CHC: Assertion violation happens here.
|
// Warning 6328: (76-105): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (403-432): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (543-572): CHC: Assertion violation happens here.
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
pragma experimental SMTChecker;
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
uint gleft;
|
||||||
|
|
||||||
|
function f() public payable {
|
||||||
|
gleft = gasleft();
|
||||||
|
|
||||||
|
fi();
|
||||||
|
|
||||||
|
assert(gleft == gasleft());
|
||||||
|
assert(gleft >= gasleft());
|
||||||
|
}
|
||||||
|
|
||||||
|
function fi() internal view {
|
||||||
|
assert(gleft == gasleft());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// Warning 6328: (124-150): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (219-245): CHC: Assertion violation happens here.
|
@ -0,0 +1,61 @@
|
|||||||
|
pragma experimental SMTChecker;
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
bytes32 bhash;
|
||||||
|
address coin;
|
||||||
|
uint dif;
|
||||||
|
uint glimit;
|
||||||
|
uint number;
|
||||||
|
uint tstamp;
|
||||||
|
bytes mdata;
|
||||||
|
address sender;
|
||||||
|
bytes4 sig;
|
||||||
|
uint value;
|
||||||
|
uint gprice;
|
||||||
|
address origin;
|
||||||
|
|
||||||
|
function f() public payable {
|
||||||
|
bhash = blockhash(12);
|
||||||
|
coin = block.coinbase;
|
||||||
|
dif = block.difficulty;
|
||||||
|
glimit = block.gaslimit;
|
||||||
|
number = block.number;
|
||||||
|
tstamp = block.timestamp;
|
||||||
|
mdata = msg.data;
|
||||||
|
sender = msg.sender;
|
||||||
|
sig = msg.sig;
|
||||||
|
value = msg.value;
|
||||||
|
gprice = tx.gasprice;
|
||||||
|
origin = tx.origin;
|
||||||
|
|
||||||
|
fi();
|
||||||
|
|
||||||
|
assert(bhash == blockhash(12));
|
||||||
|
assert(coin == block.coinbase);
|
||||||
|
assert(dif == block.difficulty);
|
||||||
|
assert(glimit == block.gaslimit);
|
||||||
|
assert(number == block.number);
|
||||||
|
assert(tstamp == block.timestamp);
|
||||||
|
assert(mdata.length == msg.data.length);
|
||||||
|
assert(sender == msg.sender);
|
||||||
|
assert(sig == msg.sig);
|
||||||
|
assert(value == msg.value);
|
||||||
|
assert(gprice == tx.gasprice);
|
||||||
|
assert(origin == tx.origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fi() internal view {
|
||||||
|
assert(bhash == blockhash(12));
|
||||||
|
assert(coin == block.coinbase);
|
||||||
|
assert(dif == block.difficulty);
|
||||||
|
assert(glimit == block.gaslimit);
|
||||||
|
assert(number == block.number);
|
||||||
|
assert(tstamp == block.timestamp);
|
||||||
|
assert(mdata.length == msg.data.length);
|
||||||
|
assert(sender == msg.sender);
|
||||||
|
assert(sig == msg.sig);
|
||||||
|
assert(value == msg.value);
|
||||||
|
assert(gprice == tx.gasprice);
|
||||||
|
assert(origin == tx.origin);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
pragma experimental SMTChecker;
|
||||||
|
|
||||||
|
contract C {
|
||||||
|
bytes32 bhash;
|
||||||
|
address coin;
|
||||||
|
uint dif;
|
||||||
|
uint glimit;
|
||||||
|
uint number;
|
||||||
|
uint tstamp;
|
||||||
|
bytes mdata;
|
||||||
|
address sender;
|
||||||
|
bytes4 sig;
|
||||||
|
uint value;
|
||||||
|
uint gprice;
|
||||||
|
address origin;
|
||||||
|
|
||||||
|
function f() public payable {
|
||||||
|
bhash = blockhash(12);
|
||||||
|
coin = block.coinbase;
|
||||||
|
dif = block.difficulty;
|
||||||
|
glimit = block.gaslimit;
|
||||||
|
number = block.number;
|
||||||
|
tstamp = block.timestamp;
|
||||||
|
mdata = msg.data;
|
||||||
|
sender = msg.sender;
|
||||||
|
sig = msg.sig;
|
||||||
|
value = msg.value;
|
||||||
|
gprice = tx.gasprice;
|
||||||
|
origin = tx.origin;
|
||||||
|
|
||||||
|
fi();
|
||||||
|
|
||||||
|
assert(bhash == blockhash(122));
|
||||||
|
assert(coin != block.coinbase);
|
||||||
|
assert(dif != block.difficulty);
|
||||||
|
assert(glimit != block.gaslimit);
|
||||||
|
assert(number != block.number);
|
||||||
|
assert(tstamp != block.timestamp);
|
||||||
|
assert(mdata.length != msg.data.length);
|
||||||
|
assert(sender != msg.sender);
|
||||||
|
assert(sig != msg.sig);
|
||||||
|
assert(value != msg.value);
|
||||||
|
assert(gprice != tx.gasprice);
|
||||||
|
assert(origin != tx.origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fi() internal view {
|
||||||
|
assert(bhash == blockhash(122));
|
||||||
|
assert(coin != block.coinbase);
|
||||||
|
assert(dif != block.difficulty);
|
||||||
|
assert(glimit != block.gaslimit);
|
||||||
|
assert(number != block.number);
|
||||||
|
assert(tstamp != block.timestamp);
|
||||||
|
assert(mdata.length != msg.data.length);
|
||||||
|
assert(sender != msg.sender);
|
||||||
|
assert(sig != msg.sig);
|
||||||
|
assert(value != msg.value);
|
||||||
|
assert(gprice != tx.gasprice);
|
||||||
|
assert(origin != tx.origin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// Warning 6328: (545-576): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (580-610): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (614-645): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (649-681): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (685-715): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (719-752): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (756-795): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (799-827): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (831-853): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (857-883): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (887-916): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (920-947): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (986-1017): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1021-1051): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1055-1086): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1090-1122): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1126-1156): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1160-1193): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1197-1236): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1240-1268): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1272-1294): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1298-1324): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1328-1357): CHC: Assertion violation happens here.
|
||||||
|
// Warning 6328: (1361-1388): CHC: Assertion violation happens here.
|
Loading…
Reference in New Issue
Block a user