mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Additional semantics test cases.
This commit is contained in:
		
							parent
							
								
									f9b90feea0
								
							
						
					
					
						commit
						cbae02b514
					
				| @ -1500,6 +1500,51 @@ BOOST_AUTO_TEST_CASE(mapping_local_assignment) | ||||
| 	ABI_CHECK(callContractFunction("f()"), encodeArgs(byte(42), byte(0), byte(0), byte(21))); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(mapping_local_tuple_assignment) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
| 		contract test { | ||||
| 			mapping(uint8 => uint8) m1; | ||||
| 			mapping(uint8 => uint8) m2; | ||||
| 			function f() public returns (uint8, uint8, uint8, uint8) { | ||||
| 				mapping(uint8 => uint8) storage m = m1; | ||||
| 				m[1] = 42; | ||||
| 
 | ||||
| 				uint8 v; | ||||
| 				(m, v) = (m2, 21); | ||||
| 				m[2] = v; | ||||
| 
 | ||||
| 				return (m1[1], m1[2], m2[1], m2[2]); | ||||
| 			} | ||||
| 		} | ||||
| 	)"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 
 | ||||
| 	ABI_CHECK(callContractFunction("f()"), encodeArgs(byte(42), byte(0), byte(0), byte(21))); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(mapping_local_compound_assignment) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
| 		contract test { | ||||
| 			mapping(uint8 => uint8) m1; | ||||
| 			mapping(uint8 => uint8) m2; | ||||
| 			function f() public returns (uint8, uint8, uint8, uint8) { | ||||
| 				mapping(uint8 => uint8) storage m = m1; | ||||
| 				m[1] = 42; | ||||
| 
 | ||||
| 				(m = m2)[2] = 21; | ||||
| 
 | ||||
| 				return (m1[1], m1[2], m2[1], m2[2]); | ||||
| 			} | ||||
| 		} | ||||
| 	)"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 
 | ||||
| 	ABI_CHECK(callContractFunction("f()"), encodeArgs(byte(42), byte(0), byte(0), byte(21))); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(structs) | ||||
| { | ||||
| 	char const* sourceCode = R"( | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user