aboutsummaryrefslogtreecommitdiffstats
path: root/stSolidityTestFiller.json
blob: fc0770c5e6e331e4c88f44fe7c7e48ed051e5306 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
{
 "SolidityTest" : {
        "env" : {
            "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
            "currentDifficulty" : "45678256",
            "currentGasLimit" : "1000000000000000000000",
            "currentNumber" : "120",
            "currentTimestamp" : 1,
            "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"
        },
        "pre" :
        {
            "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
                "balance" : "10000000000000000",
                "code" : "",
                "nonce" : "0",
                "storage" : {
                }
            },

         "d94f5374fce5edbc8e2a8697c15331677e6ebf0b" : {
                "balance" : "100000",       
        "//" : "                                                            ",
        "//" : "contract TestContract                                                   ",
        "//" : "{                                                           ",
        "//" : "    function testMethod() returns (int res)                                         ",
        "//" : "    {                                                           ",
        "//" : "        return 225;                                                     ",
            "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function destroy(address sendFoundsTo)                                      ",
        "//" : "    {                                                           ",
        "//" : "        suicide(sendFoundsTo);                                                  ",
        "//" : "    }                                                           ",
        "//" : "}                                                           ",
        "//" : "                                                            ",
        "//" : "contract TestSolidityContracts                                              ",
        "//" : "{                                                           ",
            "//" : "struct StructTest                                                   ",
        "//" : "    {                                                           ",
        "//" : "        address addr;                                                   ",
        "//" : "        int amount;                                                     ",
        "//" : "        string32 str;                                                   ",
        "//" : "        mapping (uint => address) funders;                                      ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    int globalValue;                                                    ",
        "//" : "    StructTest globalData;                                              ",
        "//" : "    function runSolidityTests() returns (hash res)                                      ",
        "//" : "    {                                                           ",
        "//" : "        //res is a mask of failing tests given the first byte is first test                     ",
        "//" : "        res = 0x0000000000000000000000000000000000000000000000000000000000000000;                   ",
        "//" : "                                                                ",
        "//" : "        createContractFromMethod();                                             ",
        "//" : "                                                                ",
        "//" : "        if (!testKeywords())                                                ",
        "//" : "            res = hash(int(res) + int(0xf000000000000000000000000000000000000000000000000000000000000000));         ",
        "//" : "                                                                ",
        "//" : "        if (!testContractInteraction())                                         ",
        "//" : "            res = hash(int(res) + int(0x0f00000000000000000000000000000000000000000000000000000000000000));         ",
        "//" : "                                                                ",
        "//" : "        if (!testContractSuicide())                                             ",
        "//" : "            res = hash(int(res) + int(0x00f0000000000000000000000000000000000000000000000000000000000000));         ",
        "//" : "                                                            ",
        "//" : "        if (!testBlockAndTransactionProperties())                                   ",
        "//" : "            res = hash(int(res) + int(0x000f000000000000000000000000000000000000000000000000000000000000));         ",
        "//" : "                                                            ",
        "//" : "        globalValue = 255;                                              ",
        "//" : "        globalData.addr = 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b;                           ",
        "//" : "        globalData.amount = 255;                                            ",
        "//" : "        globalData.str = 'global data 32 length string';                                ",
        "//" : "        globalData.funders[0] = 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b;                         ",
        "//" : "        if (!testStructuresAndVariabless())                                         ",
        "//" : "            res = hash(int(res) + int(0x0000f00000000000000000000000000000000000000000000000000000000000));         ",
        "//" : "                                                            ",
        "//" : "        //Tested 27.01.2015                                                 ",
        "//" : "        //should run out of gas                                             ",
        "//" : "        //if (!testInfiniteLoop())                                          ",
        "//" : "        //    res = hash(int(res) + int(0x000f000000000000000000000000000000000000000000000000000000000000));       ",
        "//" : "        //                                                          ",
        "//" : "        //should run out of gas                                                 ",
        "//" : "        //if (!testRecursiveMethods())                                          ",
        "//" : "        //    res = hash(int(res) + int(0x0000000000000000000000000000000000000000000000000000000000000000));       ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function testStructuresAndVariabless() returns (bool res)                               ",
        "//" : "    {                                                           ",
        "//" : "        res = true;                                                     ",
        "//" : "        if (globalValue != 255)                                             ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        if (globalValue != globalData.amount)                                       ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        if (globalData.addr != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b)                      ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        if (globalData.str != 'global data 32 length string')                               ",
        "//" : "            return false;                                               ",
        "//" : "                                                                    ",
        "//" : "        if (globalData.funders[0] != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b)                    ",
        "//" : "            return false;                                               ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function testBlockAndTransactionProperties() returns (bool res)                         ",
        "//" : "    {                                                           ",
        "//" : "        res = true;                                                     ",
        "//" : "        if (block.coinbase != 0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba)                       ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        if (block.difficulty != 45678256)                                       ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        //for some reason does not work 27.01.2015                                  ",
        "//" : "        //if (block.gaslimit != 1000000000000000000000)                                 ",
        "//" : "        //    return false;                                                 ",
        "//" : "                                                                    ",
        "//" : "        if (block.number != 120)                                            ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        //try to call this                                              ",
        "//" : "        block.blockhash(120);                                               ",
        "//" : "        block.timestamp;                                                ",
        "//" : "        msg.gas;                                                    ",
        "//" : "                                                                ",
        "//" : "        if (msg.sender != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b)                           ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        if (msg.value != 100)                                               ",
        "//" : "            return false;                                               ",
        "//" : "                                                                    ",
        "//" : "        if (tx.gasprice != 1)                                               ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "        if (tx.origin != 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b)                            ",
        "//" : "            return false;                                               ",
        "//" : "                                                                ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function testInfiniteLoop() returns (bool res)                                  ",
        "//" : "    {                                                           ",
        "//" : "        res = false;                                                    ",
        "//" : "        while(true){}                                                   ",
        "//" : "        return true;                                                    ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function testRecursiveMethods() returns (bool res)                                  ",
        "//" : "    {                                                           ",
        "//" : "        res = false;                                                    ",
        "//" : "        testRecursiveMethods2();                                            ",
        "//" : "        return true;                                                    ",
        "//" : "    }                                                           ",
        "//" : "    function testRecursiveMethods2()                                            ",
        "//" : "    {                                                           ",
        "//" : "        testRecursiveMethods();                                             ",
            "//" : "}                                                           ",
        "//" : "                                                                ",
        "//" : "                                                                ",
        "//" : "    function testContractSuicide() returns (bool res)                                   ",
        "//" : "    {                                                           ",
        "//" : "        TestContract a = new TestContract();                                        ",
        "//" : "        a.destroy(block.coinbase);                                          ",
        "//" : "        if (a.testMethod() == 225) //we should be able to call a contract                       ",
        "//" : "            return true;                                                ",
        "//" : "        return false;                                                   ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function testContractInteraction() returns (bool res)                               ",
        "//" : "    {                                                           ",
        "//" : "        TestContract a = new TestContract();                                        ",
        "//" : "        if (a.testMethod() == 225)                                          ",
        "//" : "            return true;                                                ",
        "//" : "        return false;                                                   ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function testKeywords() returns (bool res)                                      ",
        "//" : "    {                                                           ",
        "//" : "        //some simple checks for the if statemnt                                    ",
        "//" : "        //if, else, while, for, break, continue, return                                 ",
        "//" : "        int i = 0;                                                  ",
        "//" : "        res = false;                                                    ",
        "//" : "                                                                ",
        "//" : "        if (i == 0)                                                     ",
        "//" : "        {                                                       ",
        "//" : "            if( i <= -25)                                               ",
        "//" : "            {                                                       ",
        "//" : "                return false;                                               ",
        "//" : "            }                                                       ",
        "//" : "            else                                                    ",
        "//" : "            {                                                       ",
        "//" : "                while(i < 10)                                               ",
        "//" : "                    i++;                                                ",
        "//" : "                                                                        ",
        "//" : "                if (i == 10)                                                ",
        "//" : "                {                                                   ",
        "//" : "                    for(var j=10; j>0; j--)                                         ",
        "//" : "                    {                                                   ",
        "//" : "                        i--;                                                ",
        "//" : "                    }                                                   ",
        "//" : "                }                                                   ",
        "//" : "            }                                                       ",
        "//" : "        }                                                       ",
        "//" : "                                                                ",
        "//" : "                                                                ",
        "//" : "        if (i == 0)                                                     ",
        "//" : "            return true;                                                ",
        "//" : "                                                                ",
        "//" : "        return false;                                                   ",
        "//" : "    }                                                           ",
        "//" : "                                                                ",
        "//" : "    function createContractFromMethod() returns (TestContract a)                            ",
        "//" : "    {                                                           ",
        "//" : "        a = new TestContract();                                             ",
        "//" : "    }                                                           ",
        "//" : "}                                                           ",
                "code" : "0x60e060020a6000350480630c4c9a8014610078578063296df0df1461008a5780632a9afb831461009c578063380e4396146100ae5780634893d88a146100c05780637ee17e12146100ce578063981a3165146100dc578063a60eedda146100ee578063e97384dc14610100578063ed973fe91461011257005b610080610431565b8060005260206000f35b6100926103f7565b8060005260206000f35b6100a46105d1565b8060005260206000f35b6100b6610220565b8060005260206000f35b6100c8610426565b60006000f35b6100d66102df565b60006000f35b6100e4610411565b8060005260206000f35b6100f6610124565b8060005260206000f35b6101086102f5565b8060005260206000f35b61011a6101be565b8060005260206000f35b60006000605f6106be600039605f60006000f0905080600160a060020a031662f55d9d8060e060020a0260005241600160a060020a0316600452600060006024600060008660155a03f150505080600160a060020a031663b9c3d0a58060e060020a02600052602060006004600060008660155a03f150505060005160e1146101ac576101b5565b600191506101ba565b600091505b5090565b60006000605f6106be600039605f60006000f0905080600160a060020a031663b9c3d0a58060e060020a02600052602060006004600060008660155a03f150505060005160e11461020e57610217565b6001915061021c565b600091505b5090565b60006000600060009150600092508160001461023b576102bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe78213156102b5575b600a82121561027a578180600101925050610264565b81600a14610287576102b0565b600a90505b60008160ff1611156102af5781806001900392505080806001900391505061028c565b5b6102be565b600092506102da565b5b816000146102cc576102d5565b600192506102da565b600092505b505090565b6000605f6106be600039605f60006000f0905090565b60006001905041600160a060020a0316732adc25665018aa1fe0e6bc666dac8fc2697ff9ba14156103255761032e565b600090506103f4565b446302b8feb0141561033f57610348565b600090506103f4565b43607814156103565761035f565b600090506103f4565b33600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b141561038957610392565b600090506103f4565b34606414156103a0576103a9565b600090506103f4565b3a600114156103b7576103c0565b600090506103f4565b32600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b14156103ea576103f3565b600090506103f4565b5b90565b6000600090505b60011561040a576103fe565b6001905090565b60006000905061041f610426565b6001905090565b61042e610411565b50565b60006000905061043f6102df565b50610448610220565b1561045257610478565b7ff000000000000000000000000000000000000000000000000000000000000000810190505b6104806101be565b1561048a576104b0565b7f0f00000000000000000000000000000000000000000000000000000000000000810190505b6104b8610124565b156104c2576104e7565b7ef0000000000000000000000000000000000000000000000000000000000000810190505b6104ef6102f5565b156104f95761051e565b7e0f000000000000000000000000000000000000000000000000000000000000810190505b60ff60008190555073a94f5374fce5edbc8e2a8697c15331677e6ebf0b60018190555060ff6002819055507f676c6f62616c2064617461203332206c656e67746820737472696e670000000060038190555073a94f5374fce5edbc8e2a8697c15331677e6ebf0b600460006000526020526040600020819055506105a06105d1565b156105aa576105ce565b7df00000000000000000000000000000000000000000000000000000000000810190505b90565b60006001905060005460ff14156105e7576105f0565b600090506106ba565b60025460005414156106015761060a565b600090506106ba565b600154600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b14156106365761063f565b600090506106ba565b6003547f676c6f62616c2064617461203332206c656e67746820737472696e6700000000141561066e57610677565b600090506106ba565b60046000600052602052604060002054600160a060020a031673a94f5374fce5edbc8e2a8697c15331677e6ebf0b14156106b0576106b9565b600090506106ba565b5b905600605380600c6000396000f30060e060020a600035048062f55d9d14601d578063b9c3d0a514602c57005b60266004356045565b60006000f35b6032603c565b8060005260206000f35b600060e1905090565b80600160a060020a0316ff5056",
                "nonce" : "0",
                "storage" : {
                }       
            }
        },

        "transaction" :
    {   
        "//"   : "createContractFromMethod()",
        "data" : "0x7ee17e12",
        "//"   : "runSolidityTests()",
        "data" : "0x0c4c9a80",
            "gasLimit" : "465224",
            "gasPrice" : "1",
            "nonce" : "0",
            "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8",
        "to" : "d94f5374fce5edbc8e2a8697c15331677e6ebf0b",
            "value" : "100"
        }
    }
}