@@ -784,3 +784,165 @@ TEST_CASE("PythonCompiler i64 declaration") {
784
784
CHECK (r.result .type == PythonCompiler::EvalResult::integer8);
785
785
CHECK (r.result .i64 == 14 );
786
786
}
787
+
788
+ TEST_CASE (" PythonCompiler u32 expressions" ) {
789
+ CompilerOptions cu;
790
+ cu.po .disable_main = true ;
791
+ cu.emit_debug_line_column = false ;
792
+ cu.generate_object_code = false ;
793
+ cu.interactive = true ;
794
+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
795
+ PythonCompiler e (cu);
796
+ LCompilers::Result<PythonCompiler::EvalResult>
797
+
798
+ r = e.evaluate2 (" u32(1)" );
799
+ CHECK (r.ok );
800
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
801
+ CHECK (r.result .u32 == 1 );
802
+
803
+ r = e.evaluate2 (" u32(1) + u32(2)" );
804
+ CHECK (r.ok );
805
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
806
+ CHECK (r.result .u32 == 3 );
807
+
808
+ r = e.evaluate2 (" u32(20) - u32(10)" );
809
+ CHECK (r.ok );
810
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
811
+ CHECK (r.result .u32 == 10 );
812
+
813
+ r = e.evaluate2 (" u32(1) * u32(2)" );
814
+ CHECK (r.ok );
815
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
816
+ CHECK (r.result .u32 == 2 );
817
+
818
+ r = e.evaluate2 (" u32(3) ** u32(3)" );
819
+ CHECK (r.ok );
820
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
821
+ CHECK (r.result .u32 == 27 );
822
+
823
+ r = e.evaluate2 (" u32(4) // u32(2)" );
824
+ CHECK (r.ok );
825
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
826
+ CHECK (r.result .u32 == 2 );
827
+
828
+ r = e.evaluate2 (" u32(4) / u32(2)" );
829
+ CHECK (r.ok );
830
+ CHECK (r.result .type == PythonCompiler::EvalResult::real8);
831
+ CHECK (r.result .f64 == 2 );
832
+ }
833
+
834
+ TEST_CASE (" PythonCompiler u32 declaration" ) {
835
+ CompilerOptions cu;
836
+ cu.po .disable_main = true ;
837
+ cu.emit_debug_line_column = false ;
838
+ cu.generate_object_code = false ;
839
+ cu.interactive = true ;
840
+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
841
+ PythonCompiler e (cu);
842
+ LCompilers::Result<PythonCompiler::EvalResult>
843
+
844
+ r = e.evaluate2 (" i: u32" );
845
+ CHECK (r.ok );
846
+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
847
+ r = e.evaluate2 (" i = u32(5)" );
848
+ CHECK (r.ok );
849
+ CHECK (r.result .type == PythonCompiler::EvalResult::statement);
850
+ r = e.evaluate2 (" i" );
851
+ CHECK (r.ok );
852
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
853
+ CHECK (r.result .u32 == 5 );
854
+
855
+ r = e.evaluate2 (" j: u32 = u32(9)" );
856
+ CHECK (r.ok );
857
+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
858
+ r = e.evaluate2 (" j" );
859
+ CHECK (r.ok );
860
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
861
+ CHECK (r.result .u32 == 9 );
862
+
863
+ r = e.evaluate2 (" i * j" );
864
+ CHECK (r.ok );
865
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger4);
866
+ CHECK (r.result .u32 == 45 );
867
+ }
868
+
869
+ TEST_CASE (" PythonCompiler u64 expressions" ) {
870
+ CompilerOptions cu;
871
+ cu.po .disable_main = true ;
872
+ cu.emit_debug_line_column = false ;
873
+ cu.generate_object_code = false ;
874
+ cu.interactive = true ;
875
+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
876
+ PythonCompiler e (cu);
877
+ LCompilers::Result<PythonCompiler::EvalResult>
878
+
879
+ r = e.evaluate2 (" u64(1)" );
880
+ CHECK (r.ok );
881
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
882
+ CHECK (r.result .u64 == 1 );
883
+
884
+ r = e.evaluate2 (" u64(1) + u64(2)" );
885
+ CHECK (r.ok );
886
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
887
+ CHECK (r.result .u64 == 3 );
888
+
889
+ r = e.evaluate2 (" u64(20) - u64(10)" );
890
+ CHECK (r.ok );
891
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
892
+ CHECK (r.result .u64 == 10 );
893
+
894
+ r = e.evaluate2 (" u64(1) * u64(2)" );
895
+ CHECK (r.ok );
896
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
897
+ CHECK (r.result .u64 == 2 );
898
+
899
+ r = e.evaluate2 (" u64(3) ** u64(3)" );
900
+ CHECK (r.ok );
901
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
902
+ CHECK (r.result .u64 == 27 );
903
+
904
+ r = e.evaluate2 (" u64(4) // u64(2)" );
905
+ CHECK (r.ok );
906
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
907
+ CHECK (r.result .u64 == 2 );
908
+
909
+ r = e.evaluate2 (" u64(4) / u64(2)" );
910
+ CHECK (r.ok );
911
+ CHECK (r.result .type == PythonCompiler::EvalResult::real8);
912
+ CHECK (r.result .f64 == 2 );
913
+ }
914
+
915
+ TEST_CASE (" PythonCompiler u64 declaration" ) {
916
+ CompilerOptions cu;
917
+ cu.po .disable_main = true ;
918
+ cu.emit_debug_line_column = false ;
919
+ cu.generate_object_code = false ;
920
+ cu.interactive = true ;
921
+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
922
+ PythonCompiler e (cu);
923
+ LCompilers::Result<PythonCompiler::EvalResult>
924
+
925
+ r = e.evaluate2 (" i: u64" );
926
+ CHECK (r.ok );
927
+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
928
+ r = e.evaluate2 (" i = u64(5)" );
929
+ CHECK (r.ok );
930
+ CHECK (r.result .type == PythonCompiler::EvalResult::statement);
931
+ r = e.evaluate2 (" i" );
932
+ CHECK (r.ok );
933
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
934
+ CHECK (r.result .u64 == 5 );
935
+
936
+ r = e.evaluate2 (" j: u64 = u64(9)" );
937
+ CHECK (r.ok );
938
+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
939
+ r = e.evaluate2 (" j" );
940
+ CHECK (r.ok );
941
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
942
+ CHECK (r.result .u64 == 9 );
943
+
944
+ r = e.evaluate2 (" i * j" );
945
+ CHECK (r.ok );
946
+ CHECK (r.result .type == PythonCompiler::EvalResult::unsignedInteger8);
947
+ CHECK (r.result .u64 == 45 );
948
+ }
0 commit comments