mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
fixing modulus and Solidity Name and Type Resolution
minor fixes current attempts at binary fixup
This commit is contained in:
@@ -3441,278 +3441,6 @@ BOOST_AUTO_TEST_CASE(inline_array_fixed_rationals)
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(size_capabilities_of_fixed_point_types)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
ufixed0x64 a = 0.12345678;
|
||||
ufixed8x0 b = 12345678.0;
|
||||
ufixed0x64 c = 0.00000009;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(var_capable_of_holding_constant_rationals)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
var a = 0.12345678;
|
||||
var b = 12345678.0;
|
||||
var c = 0.00000009;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(invalid_rational_exponent_usage)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed8x8 a = 3 ** 1.5;
|
||||
fixed24x24 b = 2 ** (1/2);
|
||||
fixed40x40 c = 42 ** (-1/4);
|
||||
fixed48x48 d = 16 ** -0.33;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_point_casting_exponents)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 3 ** fixed(1.5);
|
||||
fixed b = 2 ** fixed(1/2);
|
||||
fixed c = 42 ** fixed(-1/4);
|
||||
fixed d = 16 ** fixed(-0.33);
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_unary_operation)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = +3.5134;
|
||||
fixed b = -2.5145;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_bitnot_unary_operation)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = ~3.56;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_bitor_binary_operation)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 1.56 | 3;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_bitxor_binary_operation)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 1.56 ^ 3;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_bitand_binary_operation)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 1.56 & 3;
|
||||
}
|
||||
}
|
||||
)";
|
||||
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(valid_fraction_fixed_type)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f(){
|
||||
fixed8x8 a = (2**24)/127;
|
||||
fixed0x8 b = 1/256;
|
||||
}
|
||||
}
|
||||
)";
|
||||
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(valid_fixed_types)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f(){
|
||||
fixed8x8 a = 87654321.12345678;
|
||||
fixed16x16 b = a**2;
|
||||
fixed24x24 c = b**3;
|
||||
fixed32x32 d = b**2;
|
||||
fixed40x40 e = a**5;
|
||||
}
|
||||
}
|
||||
)";
|
||||
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_int_conversion)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
uint128 a = 3;
|
||||
int128 b = 4;
|
||||
fixed c = b;
|
||||
ufixed d = a;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_const_int_conversion)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed c = 3;
|
||||
ufixed d = 4;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_literal)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 3.14;
|
||||
ufixed d = 2.555555;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_literal_expression)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 3.14 * 3;
|
||||
ufixed b = 4 - 2.555555;
|
||||
fixed c = 1.0 / 3.0;
|
||||
ufixed d = 599 + .5367;
|
||||
ufixed e = 35.245 % 12.9;
|
||||
ufixed f = 1.2 % 2.00000;
|
||||
fixed g = 2 ** -2;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(uint_array_declaration_with_fixed_type)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
uint[fixed(3.56)] a;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(array_declaration_with_rational)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
uint[3.56] a;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(mapping_with_fixed_literal)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
mapping(fixed => string) fixedString;
|
||||
function f() {
|
||||
fixedString[3.14] = "Pi";
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(inline_array_fixed_type)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed[3] memory a = [fixed(3.5), fixed(4.1234), fixed(967.32)];
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(inline_array_fixed_literals)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
ufixed8x16[3] memory a = [3.5, 4.1234, 2.5];
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(zero_and_eight_variants_fixed)
|
||||
{
|
||||
char const* text = R"(
|
||||
|
||||
Reference in New Issue
Block a user