@@ -784,3 +784,165 @@ TEST_CASE("PythonCompiler i64 declaration") {
784784 CHECK (r.result .type == PythonCompiler::EvalResult::integer8);
785785 CHECK (r.result .i64 == 14 );
786786}
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