From d444dbd4d95222f8e6b7c86c19ec0177fff28e31 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Tue, 13 Jul 2021 14:08:50 +0300 Subject: [PATCH] tests: add a multilevel pointer cast test too --- vlib/v/tests/pointers_multilevel_casts_test.v | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 vlib/v/tests/pointers_multilevel_casts_test.v diff --git a/vlib/v/tests/pointers_multilevel_casts_test.v b/vlib/v/tests/pointers_multilevel_casts_test.v new file mode 100644 index 0000000000..fab2f62c94 --- /dev/null +++ b/vlib/v/tests/pointers_multilevel_casts_test.v @@ -0,0 +1,40 @@ +struct Struct {} + +fn test_byte_pointer_casts() { + unsafe { + pb := &byte(1) + ppb := &&byte(2) + pppb := &&&byte(3) + ppppb := &&&&byte(4) + assert voidptr(pb).str() == '1' + assert voidptr(ppb).str() == '2' + assert voidptr(pppb).str() == '3' + assert voidptr(ppppb).str() == '4' + } +} + +fn test_char_pointer_casts() { + unsafe { + pc := &char(5) + ppc := &&char(6) + pppc := &&&char(7) + ppppc := &&&&char(8) + assert voidptr(pc).str() == '5' + assert voidptr(ppc).str() == '6' + assert voidptr(pppc).str() == '7' + assert voidptr(ppppc).str() == '8' + } +} + +fn test_struct_pointer_casts() { + unsafe { + ps := &Struct(9) + pps := &&Struct(10) + ppps := &&&Struct(11) + pppps := &&&&Struct(12) + assert voidptr(ps).str() == '9' + assert voidptr(pps).str() == 'a' + assert voidptr(ppps).str() == 'b' + assert voidptr(pppps).str() == 'c' + } +}