mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	add exponent operator
https://www.pivotaltracker.com/n/projects/1189488/stories/83746404
This commit is contained in:
		
							parent
							
								
									7dc5e2a1a0
								
							
						
					
					
						commit
						3ce223c6cb
					
				| @ -56,6 +56,36 @@ BOOST_AUTO_TEST_CASE(empty_contract) | ||||
| 	BOOST_CHECK(callContractFunction("i_am_not_there()", bytes()).empty()); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(exp_operator) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
| 		contract test { | ||||
| 			function f(uint a) returns(uint d) { return 2 ** a; } | ||||
| 		})"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	testSolidityAgainstCppOnRange("f(uint256)", [](u256 const& a) -> u256 { return u256(1 << a.convert_to<int>()); }, 0, 16); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(exp_operator_const) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
| 		contract test { | ||||
| 			function f() returns(uint d) { return 2 ** 3; } | ||||
| 		})"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	BOOST_CHECK(callContractFunction("f()", bytes()) == toBigEndian(u256(8))); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(exp_operator_const_signed) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
| 		contract test { | ||||
| 			function f() returns(int d) { return -2 ** 3; } | ||||
| 		})"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	BOOST_CHECK(callContractFunction("f()", bytes()) == toBigEndian(u256(-8))); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(recursive_calls) | ||||
| { | ||||
| 	char const* sourceCode = "contract test {\n" | ||||
|  | ||||
| @ -387,6 +387,17 @@ BOOST_AUTO_TEST_CASE(complex_expression) | ||||
| 	BOOST_CHECK_NO_THROW(parseText(text)); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(exp_expression) | ||||
| { | ||||
| 	char const* text = R"( | ||||
| 		contract test { | ||||
| 			function fun(uint256 a) { | ||||
| 				uint256 x = 3 ** a; | ||||
| 			} | ||||
| 		})"; | ||||
| 	BOOST_CHECK_NO_THROW(parseText(text)); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(while_loop) | ||||
| { | ||||
| 	char const* text = "contract test {\n" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user