mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
added bytes conversion tests, resolved that, converted to binary scaling, refactored the find algo to prevent large numbers and take into account integer bytes
think we're good on solidity type name resolution now removed couts updates to documentation and more removed couts along with literal value implementation forgot semicolons
This commit is contained in:
@@ -6634,7 +6634,7 @@ BOOST_AUTO_TEST_CASE(delete_on_array_of_structs)
|
||||
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_data_type)
|
||||
/*BOOST_AUTO_TEST_CASE(fixed_data_type)
|
||||
{
|
||||
char const* sourceCode = R"(
|
||||
contract C {
|
||||
@@ -6654,7 +6654,7 @@ BOOST_AUTO_TEST_CASE(fixed_data_type_expression)
|
||||
}
|
||||
)";
|
||||
compileAndRun(sourceCode, 0, "C");
|
||||
}
|
||||
}*/
|
||||
|
||||
BOOST_AUTO_TEST_CASE(internal_library_function)
|
||||
{
|
||||
|
||||
@@ -3278,16 +3278,16 @@ BOOST_AUTO_TEST_CASE(invalid_fixed_type_long)
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(valid_fixed_types)
|
||||
BOOST_AUTO_TEST_CASE(valid_fixed_types_casting)
|
||||
{
|
||||
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;
|
||||
ufixed8x8 a = ufixed8x8(8765.1234);
|
||||
ufixed16x16 b = a**2;
|
||||
ufixed24x24 c = b**3;
|
||||
ufixed32x32 d = b**2;
|
||||
ufixed40x40 e = a**5;
|
||||
}
|
||||
}
|
||||
)";
|
||||
@@ -3310,7 +3310,7 @@ BOOST_AUTO_TEST_CASE(fixed_type_int_conversion)
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_const_int_conversion)
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_rational_conversion)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
@@ -3328,8 +3328,8 @@ BOOST_AUTO_TEST_CASE(fixed_type_literal)
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 3.14;
|
||||
ufixed d = 2.555555;
|
||||
fixed a = 4.5;
|
||||
ufixed d = 2.5;
|
||||
}
|
||||
}
|
||||
)";
|
||||
@@ -3341,12 +3341,12 @@ 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;
|
||||
ufixed8x248 a = 3.14 * 3;
|
||||
ufixed8x248 b = 4 - 2.555555;
|
||||
ufixed0x256 c = 1.0 / 3.0;
|
||||
ufixed16x240 d = 599 + .5367;
|
||||
ufixed8x248 e = 35.245 % 12.9;
|
||||
ufixed8x248 f = 1.2 % 2;
|
||||
fixed g = 2 ** -2;
|
||||
}
|
||||
}
|
||||
@@ -3354,6 +3354,19 @@ BOOST_AUTO_TEST_CASE(fixed_type_literal_expression)
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_as_exponent_value)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed g = 2 ** -2.2;
|
||||
fixed b = 3 ** 2.56;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(!success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_type_invalid_size_conversion)
|
||||
{
|
||||
char const* text = R"(
|
||||
@@ -3408,7 +3421,7 @@ BOOST_AUTO_TEST_CASE(mapping_with_fixed_literal)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
mapping(fixed => string) fixedString;
|
||||
mapping(ufixed8x248 => string) fixedString;
|
||||
function f() {
|
||||
fixedString[3.14] = "Pi";
|
||||
}
|
||||
@@ -3434,7 +3447,7 @@ BOOST_AUTO_TEST_CASE(inline_array_fixed_rationals)
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
ufixed8x16[4] memory a = [3.5, 4.1234, 2.5, 4.0];
|
||||
ufixed8x248[4] memory a = [3.5, 4.1234, 2.5, 4.0];
|
||||
}
|
||||
}
|
||||
)";
|
||||
@@ -3445,8 +3458,8 @@ BOOST_AUTO_TEST_CASE(zero_and_eight_variants_fixed)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract A {
|
||||
fixed8x0 someInt = 4;
|
||||
fixed0x8 half = 0.5;
|
||||
ufixed8x0 someInt = 4;
|
||||
ufixed0x8 half = 0.5;
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
@@ -3457,9 +3470,9 @@ BOOST_AUTO_TEST_CASE(size_capabilities_of_fixed_point_types)
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
ufixed0x8 a = 0.12345678;
|
||||
ufixed8x0 b = 12345678.0;
|
||||
ufixed0x8 c = 0.00000009;
|
||||
ufixed0x256 a = 0.12345678;
|
||||
ufixed24x0 b = 12345678.0;
|
||||
ufixed0x256 c = 0.00000009;
|
||||
}
|
||||
}
|
||||
)";
|
||||
@@ -3510,13 +3523,38 @@ BOOST_AUTO_TEST_CASE(fixed_point_casting_exponents)
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rational_to_bytes_implicit_conversion)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
bytes32 c = 3.183;
|
||||
}
|
||||
}
|
||||
)";
|
||||
BOOST_CHECK(success(text));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fixed_to_bytes_implicit_conversion)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract test {
|
||||
function f() {
|
||||
fixed a = 3.183;
|
||||
bytes32 c = a;
|
||||
}
|
||||
}
|
||||
)";
|
||||
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;
|
||||
ufixed8x248 a = +3.5134;
|
||||
fixed8x248 b = -3.5134;
|
||||
}
|
||||
}
|
||||
)";
|
||||
|
||||
Reference in New Issue
Block a user