Jelajahi Sumber

More soa tests

Damian Tarnawski 2 minggu lalu
induk
melakukan
8a894c6ce6
1 mengubah file dengan 59 tambahan dan 36 penghapusan
  1. 59 36
      tests/core/runtime/test_core_runtime.odin

+ 59 - 36
tests/core/runtime/test_core_runtime.odin

@@ -179,6 +179,22 @@ test_map_get :: proc(t: ^testing.T) {
 	}
 }
 
+@(test)
+test_soa_make_len :: proc(t: ^testing.T) {
+
+	array, err := make(#soa[dynamic][2]int, 2)
+	defer delete(array)
+	array[0] = [2]int{1, 2}
+	array[1] = [2]int{3, 4}
+
+	testing.expect_value(t, err, nil)
+	testing.expect_value(t, len(array), 2)
+	testing.expect_value(t, cap(array), 2)
+
+	testing.expect_value(t, array[0], [2]int{1, 2})
+	testing.expect_value(t, array[1], [2]int{3, 4})
+}
+
 @(test)
 test_soa_array_allocator_resize :: proc(t: ^testing.T) {
 
@@ -186,53 +202,60 @@ test_soa_array_allocator_resize :: proc(t: ^testing.T) {
 	context.allocator = runtime.arena_allocator(&arena)
 	defer runtime.arena_destroy(&arena)
 
-	{
-		// |1 3 _ 2 4 _|
-		// |1 3 _ _ 2 4 _ _|
+	// |1 3 _ 2 4 _|
+	// |1 3 _ _ 2 4 _ _|
 
-		array, err := make(#soa[dynamic][2]int, 2, 3)
-		array[0] = [2]int{1, 2}
-		array[1] = [2]int{3, 4}
+	array, err := make(#soa[dynamic][2]int, 2, 3)
+	defer delete(array)
+	array[0] = [2]int{1, 2}
+	array[1] = [2]int{3, 4}
 
-		testing.expect_value(t, err, nil)
-		testing.expect_value(t, len(array), 2)
-		testing.expect_value(t, cap(array), 3)
+	testing.expect_value(t, err, nil)
+	testing.expect_value(t, len(array), 2)
+	testing.expect_value(t, cap(array), 3)
 
-		err = resize(&array, 4)
+	err = resize(&array, 4)
 
-		testing.expect_value(t, err, nil)
-		testing.expect_value(t, len(array), 4)
-		testing.expect_value(t, cap(array), 4)
+	testing.expect_value(t, err, nil)
+	testing.expect_value(t, len(array), 4)
+	testing.expect_value(t, cap(array), 4)
 
-		testing.expect_value(t, array[0], [2]int{1, 2})
-		testing.expect_value(t, array[1], [2]int{3, 4})
-		testing.expect_value(t, array[2], [2]int{0, 0})
-		testing.expect_value(t, array[3], [2]int{0, 0})
-	}
+	testing.expect_value(t, array[0], [2]int{1, 2})
+	testing.expect_value(t, array[1], [2]int{3, 4})
+	testing.expect_value(t, array[2], [2]int{0, 0})
+	testing.expect_value(t, array[3], [2]int{0, 0})
+}
 
-	{
-		// |1 4 2 5 3 6|
-		// |1 4 _ _ 2 5 _ _ 3 6 _ _|
 
-		array, err := make(#soa[dynamic][3]int, 2, 2)
-		array[0] = [3]int{1, 2, 3}
-		array[1] = [3]int{4, 5, 6}
+@(test)
+test_soa_array_allocator_resize_overlapping :: proc(t: ^testing.T) {
 
-		testing.expect_value(t, err, nil)
-		testing.expect_value(t, len(array), 2)
-		testing.expect_value(t, cap(array), 2)
+	arena: runtime.Arena
+	context.allocator = runtime.arena_allocator(&arena)
+	defer runtime.arena_destroy(&arena)
 
-		err = resize(&array, 4)
+	// |1 4 2 5 3 6|
+	// |1 4 _ _ 2 5 _ _ 3 6 _ _|
 
-		testing.expect_value(t, err, nil)
-		testing.expect_value(t, len(array), 4)
-		testing.expect_value(t, cap(array), 4)
+	array, err := make(#soa[dynamic][3]int, 2, 2)
+	defer delete(array)
+	array[0] = [3]int{1, 2, 3}
+	array[1] = [3]int{4, 5, 6}
 
-		testing.expect_value(t, array[0], [3]int{1, 2, 3})
-		testing.expect_value(t, array[1], [3]int{4, 5, 6})
-		testing.expect_value(t, array[2], [3]int{0, 0, 0})
-		testing.expect_value(t, array[3], [3]int{0, 0, 0})
-	}
+	testing.expect_value(t, err, nil)
+	testing.expect_value(t, len(array), 2)
+	testing.expect_value(t, cap(array), 2)
+
+	err = resize(&array, 4)
+
+	testing.expect_value(t, err, nil)
+	testing.expect_value(t, len(array), 4)
+	testing.expect_value(t, cap(array), 4)
+
+	testing.expect_value(t, array[0], [3]int{1, 2, 3})
+	testing.expect_value(t, array[1], [3]int{4, 5, 6})
+	testing.expect_value(t, array[2], [3]int{0, 0, 0})
+	testing.expect_value(t, array[3], [3]int{0, 0, 0})
 }
 
 @(test)