diff tests/farray-array.t @ 586:f536f6ac44bf

Tests: Thorough unittests for farray_splice()
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 18 Sep 2024 03:18:15 +0200
parents 33427145b453
children dab62498e69c
line wrap: on
line diff
--- a/tests/farray-array.t	Wed Sep 18 01:25:25 2024 +0200
+++ b/tests/farray-array.t	Wed Sep 18 03:18:15 2024 +0200
@@ -115,3 +115,524 @@
   $ farray_destroy TEST1
   $ farray_destroy TEST2
   $ check_no_array_artifacts
+
+Splicing
+========
+
+Replace complete array
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 ""  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 9
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  DEBUG:     9: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 3
+  DEBUG:   its contents:
+  DEBUG:     1: ` I 1 '
+  DEBUG:     2: ` I 2 '
+  DEBUG:     3: ` I 3 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Insert at the beginning (prepend)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 0  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 0
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 12
+  DEBUG:   its contents:
+  DEBUG:     1: ` I 1 '
+  DEBUG:     2: ` I 2 '
+  DEBUG:     3: ` I 3 '
+  DEBUG:     4: ` v 1 '
+  DEBUG:     5: ` v 2 '
+  DEBUG:     6: ` v 3 '
+  DEBUG:     7: ` v 4 '
+  DEBUG:     8: ` v 5 '
+  DEBUG:     9: ` v 6 '
+  DEBUG:     10: ` v 7 '
+  DEBUG:     11: ` v 8 '
+  DEBUG:     12: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Insert at the end (extend)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST "" 0  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 0
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 12
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  DEBUG:     9: ` v 9 '
+  DEBUG:     10: ` I 1 '
+  DEBUG:     11: ` I 2 '
+  DEBUG:     12: ` I 3 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Insert in the middle
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 4 0  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 0
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 12
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` I 1 '
+  DEBUG:     5: ` I 2 '
+  DEBUG:     6: ` I 3 '
+  DEBUG:     7: ` v 4 '
+  DEBUG:     8: ` v 5 '
+  DEBUG:     9: ` v 6 '
+  DEBUG:     10: ` v 7 '
+  DEBUG:     11: ` v 8 '
+  DEBUG:     12: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+"Clear" (empty inserted)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 "" INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 9
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  DEBUG:     9: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 0
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+"Clear" (no inserted)
+
+  $ farray_create DELETED
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 ""
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 9
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  DEBUG:     9: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 0
+  $ farray_destroy DELETED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Cut out some part in the middle
+
+  $ farray_create DELETED
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 2 5
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 5
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 2 '
+  DEBUG:     2: ` v 3 '
+  DEBUG:     3: ` v 4 '
+  DEBUG:     4: ` v 5 '
+  DEBUG:     5: ` v 6 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 4
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 7 '
+  DEBUG:     3: ` v 8 '
+  DEBUG:     4: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Cut out some part from the beginning
+
+  $ farray_create DELETED
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 6
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 6
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 3
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 7 '
+  DEBUG:     2: ` v 8 '
+  DEBUG:     3: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Cut out some part at the end (1)
+
+  $ farray_create DELETED
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 0 1
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 1
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 8
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  $ farray_destroy DELETED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Cut out some part at the end (1)
+
+  $ farray_create DELETED
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST -1 ""
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 2
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 8 '
+  DEBUG:     2: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 7
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  $ farray_destroy DELETED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice at the beginning (shrink)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 4  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 4
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 8
+  DEBUG:   its contents:
+  DEBUG:     1: ` I 1 '
+  DEBUG:     2: ` I 2 '
+  DEBUG:     3: ` I 3 '
+  DEBUG:     4: ` v 5 '
+  DEBUG:     5: ` v 6 '
+  DEBUG:     6: ` v 7 '
+  DEBUG:     7: ` v 8 '
+  DEBUG:     8: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice at the end (shrink)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST -3 4  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 4
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 6 '
+  DEBUG:     2: ` v 7 '
+  DEBUG:     3: ` v 8 '
+  DEBUG:     4: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 8
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` I 1 '
+  DEBUG:     7: ` I 2 '
+  DEBUG:     8: ` I 3 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice in the middle (shrink)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 3 4  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 4
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 3 '
+  DEBUG:     2: ` v 4 '
+  DEBUG:     3: ` v 5 '
+  DEBUG:     4: ` v 6 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 8
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` I 1 '
+  DEBUG:     4: ` I 2 '
+  DEBUG:     5: ` I 3 '
+  DEBUG:     6: ` v 7 '
+  DEBUG:     7: ` v 8 '
+  DEBUG:     8: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice at the beginning (grow)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 2  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 2
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 10
+  DEBUG:   its contents:
+  DEBUG:     1: ` I 1 '
+  DEBUG:     2: ` I 2 '
+  DEBUG:     3: ` I 3 '
+  DEBUG:     4: ` v 3 '
+  DEBUG:     5: ` v 4 '
+  DEBUG:     6: ` v 5 '
+  DEBUG:     7: ` v 6 '
+  DEBUG:     8: ` v 7 '
+  DEBUG:     9: ` v 8 '
+  DEBUG:     10: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice at the end (grow)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST -1 2  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 2
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 8 '
+  DEBUG:     2: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 10
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` I 1 '
+  DEBUG:     9: ` I 2 '
+  DEBUG:     10: ` I 3 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice in the middle (grow)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 3 2  INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 2
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 3 '
+  DEBUG:     2: ` v 4 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 10
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` I 1 '
+  DEBUG:     4: ` I 2 '
+  DEBUG:     5: ` I 3 '
+  DEBUG:     6: ` v 5 '
+  DEBUG:     7: ` v 6 '
+  DEBUG:     8: ` v 7 '
+  DEBUG:     9: ` v 8 '
+  DEBUG:     10: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice at the beginning (no length change)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 1 3 INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 3
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 9
+  DEBUG:   its contents:
+  DEBUG:     1: ` I 1 '
+  DEBUG:     2: ` I 2 '
+  DEBUG:     3: ` I 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  DEBUG:     9: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice at the end (no length change)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST -2 3 INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 3
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 7 '
+  DEBUG:     2: ` v 8 '
+  DEBUG:     3: ` v 9 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 9
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` v 4 '
+  DEBUG:     5: ` v 5 '
+  DEBUG:     6: ` v 6 '
+  DEBUG:     7: ` I 1 '
+  DEBUG:     8: ` I 2 '
+  DEBUG:     9: ` I 3 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Splice in the middle (no length change)
+
+  $ farray_create DELETED
+  $ farray_create INSERTED  ' I 1 ' ' I 2 ' ' I 3 '
+  $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 '  ' v 9 '
+  $ farray_splice DELETED TEST 4 3 INSERTED
+  $ farray_debug DELETED
+  DEBUG: array `DELETED' has length 3
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 4 '
+  DEBUG:     2: ` v 5 '
+  DEBUG:     3: ` v 6 '
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 9
+  DEBUG:   its contents:
+  DEBUG:     1: ` v 1 '
+  DEBUG:     2: ` v 2 '
+  DEBUG:     3: ` v 3 '
+  DEBUG:     4: ` I 1 '
+  DEBUG:     5: ` I 2 '
+  DEBUG:     6: ` I 3 '
+  DEBUG:     7: ` v 7 '
+  DEBUG:     8: ` v 8 '
+  DEBUG:     9: ` v 9 '
+  $ farray_destroy DELETED
+  $ farray_destroy INSERTED
+  $ farray_destroy TEST
+  $ check_no_array_artifacts