From 6c0e66d652e57f60f686408192554403db25a279 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Mon, 3 Apr 2023 12:05:37 +0530 Subject: [PATCH 01/11] Initial support for Dictionary return type --- src/libasr/codegen/asr_to_llvm.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libasr/codegen/asr_to_llvm.cpp b/src/libasr/codegen/asr_to_llvm.cpp index 0e12c89555..c01450f288 100644 --- a/src/libasr/codegen/asr_to_llvm.cpp +++ b/src/libasr/codegen/asr_to_llvm.cpp @@ -4084,6 +4084,27 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor return_type = list_api->get_list_type(el_llvm_type, el_type_code, type_size); break; } + case (ASR::ttypeType::Dict) : { + ASR::Dict_t* asr_dict = ASR::down_cast(return_var_type0); + std::string key_type_code = ASRUtils::get_type_code(asr_dict->m_key_type); + std::string value_type_code = ASRUtils::get_type_code(asr_dict->m_value_type); + + bool is_local_array_type = false, is_local_malloc_array_type = false; + bool is_local_list = false; + ASR::dimension_t* local_m_dims = nullptr; + ASR::storage_typeType local_m_storage = ASR::storage_typeType::Default; + int local_n_dims = 0, local_a_kind = -1; + + llvm::Type* key_llvm_type = get_type_from_ttype_t(asr_dict->m_key_type, local_m_storage,is_local_array_type, is_local_malloc_array_type,is_local_list, local_m_dims, local_n_dims,local_a_kind); + llvm::Type* value_llvm_type = get_type_from_ttype_t(asr_dict->m_value_type, local_m_storage,is_local_array_type, is_local_malloc_array_type,is_local_list, local_m_dims, local_n_dims,local_a_kind); + int32_t key_type_size = get_type_size(asr_dict->m_key_type, key_llvm_type, local_a_kind); + int32_t value_type_size = get_type_size(asr_dict->m_value_type, value_llvm_type, local_a_kind); + + set_dict_api(asr_dict); + + return_type = llvm_utils->dict_api->get_dict_type(key_type_code, value_type_code, key_type_size,value_type_size, key_llvm_type, value_llvm_type); + break; + } default : throw CodeGenError("Type not implemented " + std::to_string(return_var_type)); } From 339d16d26602723fa463700b9962a9db4e1e7aef Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Wed, 5 Apr 2023 15:54:06 +0530 Subject: [PATCH 02/11] Initial implementation of full Dict return --- integration_tests/test_dict_01.py | 18 +++++++++++------- integration_tests/test_dict_02.py | 15 +++++++++++---- src/libasr/codegen/llvm_utils.h | 3 ++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/integration_tests/test_dict_01.py b/integration_tests/test_dict_01.py index e76fcf966a..1f5ab278b9 100644 --- a/integration_tests/test_dict_01.py +++ b/integration_tests/test_dict_01.py @@ -1,19 +1,23 @@ -from lpython import i32, f64 +from lpython import f64, i32 -def test_dict(): +def fill_rollnumber2cpi(i : i32, size: i32) -> dict[i32, f64]: rollnumber2cpi: dict[i32, f64] = {} - i: i32 - size: i32 = 1000 - + rollnumber2cpi[0] = 1.1 - for i in range(1000, 1000 + size): rollnumber2cpi[i] = float(i/100.0 + 5.0) + return rollnumber2cpi + +def test_dict(): + i: i32 + size: i32 = 1000 + rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(i, size) + for i in range(1000 + size - 1, 1001, -1): assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 assert len(rollnumber2cpi) == 1001 -test_dict() +test_dict() \ No newline at end of file diff --git a/integration_tests/test_dict_02.py b/integration_tests/test_dict_02.py index 672fcb1a5f..b702f2d0d0 100644 --- a/integration_tests/test_dict_02.py +++ b/integration_tests/test_dict_02.py @@ -1,13 +1,21 @@ from lpython import i32, f64 +def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: + i : i32 + rollnumber2cpi: dict[i32, f64] = {} + + rollnumber2cpi[0] = 1.1 + for i in range(1000, 1000 + size, 7): + rollnumber2cpi[i] = f64(i)/100.0 + 5.0 + + return rollnumber2cpi + def test_dict(): - rollnumber2cpi: dict[i32, f64] = {0: 1.1} i: i32 size: i32 = 7000 size1: i32 - for i in range(1000, 1000 + size, 7): - rollnumber2cpi[i] = f64(i)/100.0 + 5.0 + rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) size1 = i32(size/7 + 1.0) for i in range(1000, 1000 + size//2, 7): @@ -27,7 +35,6 @@ def test_dict(): for i in range(1000, 1000 + size, 7): assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 - assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 test_dict() diff --git a/src/libasr/codegen/llvm_utils.h b/src/libasr/codegen/llvm_utils.h index 5a35bac52f..984807bece 100644 --- a/src/libasr/codegen/llvm_utils.h +++ b/src/libasr/codegen/llvm_utils.h @@ -95,7 +95,8 @@ namespace LCompilers { return ASR::is_a(*asr_type) || ASR::is_a(*asr_type) || ASR::is_a(*asr_type) || - ASR::is_a(*asr_type); + ASR::is_a(*asr_type)|| + ASR::is_a(*asr_type); } } From 6b236375d1e99b3587b92945e23df7e1bb00350c Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Wed, 5 Apr 2023 16:47:35 +0530 Subject: [PATCH 03/11] Fixing CI build --- integration_tests/test_dict_01.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration_tests/test_dict_01.py b/integration_tests/test_dict_01.py index 1f5ab278b9..01edc08aa0 100644 --- a/integration_tests/test_dict_01.py +++ b/integration_tests/test_dict_01.py @@ -1,6 +1,6 @@ from lpython import f64, i32 -def fill_rollnumber2cpi(i : i32, size: i32) -> dict[i32, f64]: +def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: rollnumber2cpi: dict[i32, f64] = {} rollnumber2cpi[0] = 1.1 @@ -12,7 +12,7 @@ def fill_rollnumber2cpi(i : i32, size: i32) -> dict[i32, f64]: def test_dict(): i: i32 size: i32 = 1000 - rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(i, size) + rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) for i in range(1000 + size - 1, 1001, -1): assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 From 495fbe86b4d5b6f06cb77fc3637e7c97e6f34bb3 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Wed, 5 Apr 2023 17:15:00 +0530 Subject: [PATCH 04/11] Fixing CI Build 2 --- integration_tests/test_dict_01.py | 1 + 1 file changed, 1 insertion(+) diff --git a/integration_tests/test_dict_01.py b/integration_tests/test_dict_01.py index 01edc08aa0..887d0fc7e8 100644 --- a/integration_tests/test_dict_01.py +++ b/integration_tests/test_dict_01.py @@ -1,6 +1,7 @@ from lpython import f64, i32 def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: + i : i32 rollnumber2cpi: dict[i32, f64] = {} rollnumber2cpi[0] = 1.1 From d17c4f7f6734311ab29a0942ee98c3b28b3eb144 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Thu, 6 Apr 2023 01:00:17 +0530 Subject: [PATCH 05/11] Added Dict Return in C backend --- src/libasr/codegen/asr_to_c_cpp.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libasr/codegen/asr_to_c_cpp.h b/src/libasr/codegen/asr_to_c_cpp.h index a50dcfacfb..6626904c3f 100644 --- a/src/libasr/codegen/asr_to_c_cpp.h +++ b/src/libasr/codegen/asr_to_c_cpp.h @@ -442,6 +442,9 @@ R"(#include } else if (ASR::is_a(*return_var->m_type)) { has_typevar = true; return ""; + } else if (ASR::is_a(*return_var->m_type)) { + ASR::Dict_t* dict_type = ASR::down_cast(return_var->m_type); + sub = c_ds_api->get_dict_type(dict_type) + " "; } else { throw CodeGenError("Return type not supported in function '" + std::string(x.m_name) + @@ -661,6 +664,16 @@ R"(#include const_name + " = " + src + ";\n"); src = const_name; return; + } else if( ASR::is_a(*x.m_type) ) { + ASR::Dict_t* dict_type = ASR::down_cast(x.m_type); + const_name += std::to_string(const_vars_count); + const_vars_count += 1; + const_name = current_scope->get_unique_name(const_name); + std::string indent(indentation_level*indentation_spaces, ' '); + tmp_buffer_src.push_back(check_tmp_buffer() + indent + c_ds_api->get_dict_type(dict_type) + + " " + const_name + " = " + src + ";\n"); + src = const_name; + return; } src = check_tmp_buffer() + src; } @@ -797,6 +810,9 @@ R"(#include } src = check_tmp_buffer() + src_tmp; return; + } else if (ASR::is_a(*x.m_target)) { + self().visit_DictItem(*ASR::down_cast(x.m_target)); + target = src; } else { LCOMPILERS_ASSERT(false) } From accea655584f53135c2dcdc4f1e3c9f70d6961c6 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Thu, 6 Apr 2023 12:54:39 +0530 Subject: [PATCH 06/11] Added integration test cases --- integration_tests/CMakeLists.txt | 2 + integration_tests/test_dict_01.py | 43 ++++++++---------- integration_tests/test_dict_02.py | 73 ++++++++++++++----------------- integration_tests/test_dict_06.py | 24 ++++++++++ integration_tests/test_dict_07.py | 18 ++++++++ 5 files changed, 96 insertions(+), 64 deletions(-) create mode 100644 integration_tests/test_dict_06.py create mode 100644 integration_tests/test_dict_07.py diff --git a/integration_tests/CMakeLists.txt b/integration_tests/CMakeLists.txt index b9e40ed31a..508f252b24 100644 --- a/integration_tests/CMakeLists.txt +++ b/integration_tests/CMakeLists.txt @@ -288,6 +288,8 @@ RUN(NAME test_dict_02 LABELS cpython llvm c) RUN(NAME test_dict_03 LABELS cpython llvm) RUN(NAME test_dict_04 LABELS cpython llvm) RUN(NAME test_dict_05 LABELS cpython llvm) +RUN(NAME test_dict_06 LABELS cpython llvm c) +RUN(NAME test_dict_07 LABELS cpython llvm) RUN(NAME test_for_loop LABELS cpython llvm c) RUN(NAME modules_01 LABELS cpython llvm c wasm wasm_x86 wasm_x64) RUN(NAME modules_02 LABELS cpython llvm c wasm wasm_x86 wasm_x64) diff --git a/integration_tests/test_dict_01.py b/integration_tests/test_dict_01.py index 887d0fc7e8..8b2100f219 100644 --- a/integration_tests/test_dict_01.py +++ b/integration_tests/test_dict_01.py @@ -1,24 +1,19 @@ -from lpython import f64, i32 - -def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: - i : i32 - rollnumber2cpi: dict[i32, f64] = {} - - rollnumber2cpi[0] = 1.1 - for i in range(1000, 1000 + size): - rollnumber2cpi[i] = float(i/100.0 + 5.0) - - return rollnumber2cpi - -def test_dict(): - i: i32 - size: i32 = 1000 - rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) - - for i in range(1000 + size - 1, 1001, -1): - assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 - - assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 - assert len(rollnumber2cpi) == 1001 - -test_dict() \ No newline at end of file +from lpython import i32, f64 + +def test_dict(): + rollnumber2cpi: dict[i32, f64] = {} + i: i32 + size: i32 = 1000 + + rollnumber2cpi[0] = 1.1 + + for i in range(1000, 1000 + size): + rollnumber2cpi[i] = float(i/100.0 + 5.0) + + for i in range(1000 + size - 1, 1001, -1): + assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 + + assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 + assert len(rollnumber2cpi) == 1001 + +test_dict() diff --git a/integration_tests/test_dict_02.py b/integration_tests/test_dict_02.py index b702f2d0d0..2e71111b2c 100644 --- a/integration_tests/test_dict_02.py +++ b/integration_tests/test_dict_02.py @@ -1,40 +1,33 @@ -from lpython import i32, f64 - -def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: - i : i32 - rollnumber2cpi: dict[i32, f64] = {} - - rollnumber2cpi[0] = 1.1 - for i in range(1000, 1000 + size, 7): - rollnumber2cpi[i] = f64(i)/100.0 + 5.0 - - return rollnumber2cpi - -def test_dict(): - i: i32 - size: i32 = 7000 - size1: i32 - - rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) - - size1 = i32(size/7 + 1.0) - for i in range(1000, 1000 + size//2, 7): - assert abs(rollnumber2cpi.pop(i) - f64(i)/100.0 - 5.0) <= 1e-12 - size1 = size1 - 1 - assert len(rollnumber2cpi) == size1 - - for i in range(1000, 1000 + size//2, 7): - rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 - - for i in range(1000, 1000 + size//2, 7): - assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 - - for i in range(1000, 1000 + size, 7): - rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 - - for i in range(1000, 1000 + size, 7): - assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 - - assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 - -test_dict() +from lpython import i32, f64 + +def test_dict(): + rollnumber2cpi: dict[i32, f64] = {0: 1.1} + i: i32 + size: i32 = 7000 + size1: i32 + + for i in range(1000, 1000 + size, 7): + rollnumber2cpi[i] = f64(i)/100.0 + 5.0 + + size1 = i32(size/7 + 1.0) + for i in range(1000, 1000 + size//2, 7): + assert abs(rollnumber2cpi.pop(i) - f64(i)/100.0 - 5.0) <= 1e-12 + size1 = size1 - 1 + assert len(rollnumber2cpi) == size1 + + for i in range(1000, 1000 + size//2, 7): + rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 + + for i in range(1000, 1000 + size//2, 7): + assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 + + for i in range(1000, 1000 + size, 7): + rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 + + for i in range(1000, 1000 + size, 7): + assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 + + + assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 + +test_dict() diff --git a/integration_tests/test_dict_06.py b/integration_tests/test_dict_06.py new file mode 100644 index 0000000000..a26bee958c --- /dev/null +++ b/integration_tests/test_dict_06.py @@ -0,0 +1,24 @@ +from lpython import f64, i32 + +def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: + i : i32 + rollnumber2cpi: dict[i32, f64] = {} + + rollnumber2cpi[0] = 1.1 + for i in range(1000, 1000 + size): + rollnumber2cpi[i] = float(i/100.0 + 5.0) + + return rollnumber2cpi + +def test_dict(): + i: i32 + size: i32 = 1000 + rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) + + for i in range(1000 + size - 1, 1001, -1): + assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 + + assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 + assert len(rollnumber2cpi) == 1001 + +test_dict() \ No newline at end of file diff --git a/integration_tests/test_dict_07.py b/integration_tests/test_dict_07.py new file mode 100644 index 0000000000..068671c70a --- /dev/null +++ b/integration_tests/test_dict_07.py @@ -0,0 +1,18 @@ +def fill_smalltocapital() -> dict[str, str]: + return {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D','e': 'E', + 'f': 'F', 'g': 'G', 'h': 'H', 'i': 'I','j': 'J', + 'k': 'K', 'l': 'L', 'm': 'M', 'n': 'N','o': 'O', + 'p': 'P', 'q': 'Q', 'r': 'R', 's': 'S','t': 'T', + 'u': 'U', 'v': 'V', 'w': 'W', 'x': 'X','y': 'Y', + 'z': 'Z'} + +def test_dict(): + i : i32 + smalltocaps: dict[str, str] + smalltocaps = fill_smalltocapital() + + assert len(smalltocaps) == 26 + for i in range(97, 97 + 26): + assert smalltocaps[chr(i)] == chr(i - 32) + +test_dict() \ No newline at end of file From 96c6447060af7f71c51147d2c06e17ff19fe8f19 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Thu, 6 Apr 2023 12:56:09 +0530 Subject: [PATCH 07/11] Added new lines at end of test cases --- integration_tests/test_dict_06.py | 2 +- integration_tests/test_dict_07.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integration_tests/test_dict_06.py b/integration_tests/test_dict_06.py index a26bee958c..0763d4592c 100644 --- a/integration_tests/test_dict_06.py +++ b/integration_tests/test_dict_06.py @@ -21,4 +21,4 @@ def test_dict(): assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 assert len(rollnumber2cpi) == 1001 -test_dict() \ No newline at end of file +test_dict() diff --git a/integration_tests/test_dict_07.py b/integration_tests/test_dict_07.py index 068671c70a..5de90c65d9 100644 --- a/integration_tests/test_dict_07.py +++ b/integration_tests/test_dict_07.py @@ -15,4 +15,4 @@ def test_dict(): for i in range(97, 97 + 26): assert smalltocaps[chr(i)] == chr(i - 32) -test_dict() \ No newline at end of file +test_dict() From 6bd0a28a69a13caf37abadf4645ca884f1ab1a63 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Thu, 6 Apr 2023 12:58:24 +0530 Subject: [PATCH 08/11] CRLF to LF --- integration_tests/test_dict_01.py | 38 +++++++++--------- integration_tests/test_dict_02.py | 66 +++++++++++++++---------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/integration_tests/test_dict_01.py b/integration_tests/test_dict_01.py index 8b2100f219..e76fcf966a 100644 --- a/integration_tests/test_dict_01.py +++ b/integration_tests/test_dict_01.py @@ -1,19 +1,19 @@ -from lpython import i32, f64 - -def test_dict(): - rollnumber2cpi: dict[i32, f64] = {} - i: i32 - size: i32 = 1000 - - rollnumber2cpi[0] = 1.1 - - for i in range(1000, 1000 + size): - rollnumber2cpi[i] = float(i/100.0 + 5.0) - - for i in range(1000 + size - 1, 1001, -1): - assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 - - assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 - assert len(rollnumber2cpi) == 1001 - -test_dict() +from lpython import i32, f64 + +def test_dict(): + rollnumber2cpi: dict[i32, f64] = {} + i: i32 + size: i32 = 1000 + + rollnumber2cpi[0] = 1.1 + + for i in range(1000, 1000 + size): + rollnumber2cpi[i] = float(i/100.0 + 5.0) + + for i in range(1000 + size - 1, 1001, -1): + assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 + + assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 + assert len(rollnumber2cpi) == 1001 + +test_dict() diff --git a/integration_tests/test_dict_02.py b/integration_tests/test_dict_02.py index 2e71111b2c..672fcb1a5f 100644 --- a/integration_tests/test_dict_02.py +++ b/integration_tests/test_dict_02.py @@ -1,33 +1,33 @@ -from lpython import i32, f64 - -def test_dict(): - rollnumber2cpi: dict[i32, f64] = {0: 1.1} - i: i32 - size: i32 = 7000 - size1: i32 - - for i in range(1000, 1000 + size, 7): - rollnumber2cpi[i] = f64(i)/100.0 + 5.0 - - size1 = i32(size/7 + 1.0) - for i in range(1000, 1000 + size//2, 7): - assert abs(rollnumber2cpi.pop(i) - f64(i)/100.0 - 5.0) <= 1e-12 - size1 = size1 - 1 - assert len(rollnumber2cpi) == size1 - - for i in range(1000, 1000 + size//2, 7): - rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 - - for i in range(1000, 1000 + size//2, 7): - assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 - - for i in range(1000, 1000 + size, 7): - rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 - - for i in range(1000, 1000 + size, 7): - assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 - - - assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 - -test_dict() +from lpython import i32, f64 + +def test_dict(): + rollnumber2cpi: dict[i32, f64] = {0: 1.1} + i: i32 + size: i32 = 7000 + size1: i32 + + for i in range(1000, 1000 + size, 7): + rollnumber2cpi[i] = f64(i)/100.0 + 5.0 + + size1 = i32(size/7 + 1.0) + for i in range(1000, 1000 + size//2, 7): + assert abs(rollnumber2cpi.pop(i) - f64(i)/100.0 - 5.0) <= 1e-12 + size1 = size1 - 1 + assert len(rollnumber2cpi) == size1 + + for i in range(1000, 1000 + size//2, 7): + rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 + + for i in range(1000, 1000 + size//2, 7): + assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 + + for i in range(1000, 1000 + size, 7): + rollnumber2cpi[i] = - f64(i)/100.0 - 5.0 + + for i in range(1000, 1000 + size, 7): + assert abs(rollnumber2cpi[i] + f64(i)/100.0 + 5.0) <= 1e-12 + + + assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 + +test_dict() From cb07e5f738715232b804520c7c60b8c914b0eab1 Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Thu, 6 Apr 2023 13:35:22 +0530 Subject: [PATCH 09/11] CRLF to LF --- integration_tests/test_dict_06.py | 48 +++++++++++++++---------------- integration_tests/test_dict_07.py | 36 +++++++++++------------ 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/integration_tests/test_dict_06.py b/integration_tests/test_dict_06.py index 0763d4592c..a696dac94e 100644 --- a/integration_tests/test_dict_06.py +++ b/integration_tests/test_dict_06.py @@ -1,24 +1,24 @@ -from lpython import f64, i32 - -def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: - i : i32 - rollnumber2cpi: dict[i32, f64] = {} - - rollnumber2cpi[0] = 1.1 - for i in range(1000, 1000 + size): - rollnumber2cpi[i] = float(i/100.0 + 5.0) - - return rollnumber2cpi - -def test_dict(): - i: i32 - size: i32 = 1000 - rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) - - for i in range(1000 + size - 1, 1001, -1): - assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 - - assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 - assert len(rollnumber2cpi) == 1001 - -test_dict() +from lpython import f64, i32 + +def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: + i : i32 + rollnumber2cpi: dict[i32, f64] = {} + + rollnumber2cpi[0] = 1.1 + for i in range(1000, 1000 + size): + rollnumber2cpi[i] = float(i/100.0 + 5.0) + + return rollnumber2cpi + +def test_dict(): + i: i32 + size: i32 = 1000 + rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) + + for i in range(1000 + size - 1, 1001, -1): + assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 + + assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 + assert len(rollnumber2cpi) == 1001 + +test_dict() diff --git a/integration_tests/test_dict_07.py b/integration_tests/test_dict_07.py index 5de90c65d9..908313eefa 100644 --- a/integration_tests/test_dict_07.py +++ b/integration_tests/test_dict_07.py @@ -1,18 +1,18 @@ -def fill_smalltocapital() -> dict[str, str]: - return {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D','e': 'E', - 'f': 'F', 'g': 'G', 'h': 'H', 'i': 'I','j': 'J', - 'k': 'K', 'l': 'L', 'm': 'M', 'n': 'N','o': 'O', - 'p': 'P', 'q': 'Q', 'r': 'R', 's': 'S','t': 'T', - 'u': 'U', 'v': 'V', 'w': 'W', 'x': 'X','y': 'Y', - 'z': 'Z'} - -def test_dict(): - i : i32 - smalltocaps: dict[str, str] - smalltocaps = fill_smalltocapital() - - assert len(smalltocaps) == 26 - for i in range(97, 97 + 26): - assert smalltocaps[chr(i)] == chr(i - 32) - -test_dict() +def fill_smalltocapital() -> dict[str, str]: + return {'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D','e': 'E', + 'f': 'F', 'g': 'G', 'h': 'H', 'i': 'I','j': 'J', + 'k': 'K', 'l': 'L', 'm': 'M', 'n': 'N','o': 'O', + 'p': 'P', 'q': 'Q', 'r': 'R', 's': 'S','t': 'T', + 'u': 'U', 'v': 'V', 'w': 'W', 'x': 'X','y': 'Y', + 'z': 'Z'} + +def test_dict(): + i : i32 + smalltocaps: dict[str, str] + smalltocaps = fill_smalltocapital() + + assert len(smalltocaps) == 26 + for i in range(97, 97 + 26): + assert smalltocaps[chr(i)] == chr(i - 32) + +test_dict() From 0e4f2b01124ff53583c35f07a673166d521fc4bb Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Fri, 7 Apr 2023 17:33:29 +0530 Subject: [PATCH 10/11] Changed 1000 to 200 for faster tests --- integration_tests/test_dict_06.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration_tests/test_dict_06.py b/integration_tests/test_dict_06.py index a696dac94e..fbdc00a4b8 100644 --- a/integration_tests/test_dict_06.py +++ b/integration_tests/test_dict_06.py @@ -12,7 +12,7 @@ def fill_rollnumber2cpi(size: i32) -> dict[i32, f64]: def test_dict(): i: i32 - size: i32 = 1000 + size: i32 = 200 rollnumber2cpi: dict[i32, f64] = fill_rollnumber2cpi(size) for i in range(1000 + size - 1, 1001, -1): From f16d4d0739791d4689d95b35f65d4254b3b98eca Mon Sep 17 00:00:00 2001 From: Harsh Singh Jadon Date: Fri, 7 Apr 2023 17:38:14 +0530 Subject: [PATCH 11/11] Minor fix --- integration_tests/test_dict_06.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration_tests/test_dict_06.py b/integration_tests/test_dict_06.py index fbdc00a4b8..bdff5f67c6 100644 --- a/integration_tests/test_dict_06.py +++ b/integration_tests/test_dict_06.py @@ -19,6 +19,6 @@ def test_dict(): assert abs(rollnumber2cpi[i] - i/100.0 - 5.0) <= 1e-12 assert abs(rollnumber2cpi[0] - 1.1) <= 1e-12 - assert len(rollnumber2cpi) == 1001 + assert len(rollnumber2cpi) == 201 test_dict()