avr: added some unit tests for LIST and TREE.
This commit is contained in:
381
avr/common/tree_t.asm
Normal file
381
avr/common/tree_t.asm
Normal file
@@ -0,0 +1,381 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
; * This file is part of the project "AqHome". *
|
||||
; * Please see toplevel file COPYING of that project for license details. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
|
||||
.equ TREE_TEST_OBJECT_OFFS_LIST = 0
|
||||
.equ TREE_TEST_OBJECT_OFFS_VALUE1 = TREE_SIZE
|
||||
.equ TREE_TEST_OBJECT_OFFS_VALUE2 = TREE_SIZE+1
|
||||
.equ TREE_TEST_OBJECT_SIZE = TREE_SIZE+2
|
||||
|
||||
|
||||
|
||||
.dseg
|
||||
|
||||
testTree_root: .byte TREE_TEST_OBJECT_SIZE
|
||||
testTree_child1: .byte TREE_TEST_OBJECT_SIZE
|
||||
testTree_child2: .byte TREE_TEST_OBJECT_SIZE
|
||||
testTree_child3: .byte TREE_TEST_OBJECT_SIZE
|
||||
|
||||
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine treeTest_Object_Init
|
||||
; @param Y pointer to object to init
|
||||
; @param r18 value 1
|
||||
; @param r19 value 2
|
||||
|
||||
treeTest_Object_Init:
|
||||
bigcall Tree_InitObject ; (R16)
|
||||
std Y+TREE_TEST_OBJECT_OFFS_VALUE1, r18
|
||||
std Y+TREE_TEST_OBJECT_OFFS_VALUE2, r19
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
treeTest1:
|
||||
ldi yl, LOW(testTree_root)
|
||||
ldi yh, HIGH(testTree_root)
|
||||
ldi r18, 1
|
||||
ldi r19, 2
|
||||
rcall treeTest_Object_Init
|
||||
mov xl, yl
|
||||
mov xh, yh
|
||||
|
||||
rcall treeTestCreateAndAddChild1
|
||||
ldi r16, 1 ; error code
|
||||
brcc treeTest1_error
|
||||
|
||||
rcall treeTestCreateAndAddChild2
|
||||
ldi r16, 2 ; error code
|
||||
brcc treeTest1_error
|
||||
|
||||
rcall treeTestCreateAndAddChild3
|
||||
ldi r16, 3 ; error code
|
||||
brcc treeTest1_error
|
||||
|
||||
ldi yl, LOW(testTree_root)
|
||||
ldi yh, HIGH(testTree_root)
|
||||
bigcall Tree_GetFirstChildObject
|
||||
ldi r16, 4 ; error code
|
||||
cpi xl, LOW(testTree_child1)
|
||||
brne treeTest1_error
|
||||
cpi xh, HIGH(testTree_child1)
|
||||
brne treeTest1_error
|
||||
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
ldd r16, Y+TREE_TEST_OBJECT_OFFS_VALUE1
|
||||
cpi r16, 3
|
||||
ldi r16, 5 ; error code
|
||||
brne treeTest1_error
|
||||
ldd r16, Y+TREE_TEST_OBJECT_OFFS_VALUE2
|
||||
cpi r16, 4
|
||||
ldi r16, 6 ; error code
|
||||
brne treeTest1_error
|
||||
|
||||
rcall treeTestNextSiblingIs2
|
||||
ldi r16, 7 ; error code
|
||||
brcc treeTest1_error
|
||||
|
||||
rcall treeTestNextSiblingIs3
|
||||
ldi r16, 8 ; error code
|
||||
brcc treeTest1_error
|
||||
|
||||
rcall treeTestNextSiblingIsNull
|
||||
ldi r16, 9 ; error code
|
||||
brcc treeTest1_error
|
||||
|
||||
sec
|
||||
ret
|
||||
|
||||
treeTest1_error:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
treeTest2:
|
||||
ldi yl, LOW(testTree_child2)
|
||||
ldi yh, HIGH(testTree_child2)
|
||||
bigcall Tree_UnlinkObject
|
||||
|
||||
rcall treeTestCheckParentNull
|
||||
ldi r16, 1 ; error code
|
||||
brcc treeTest2_error
|
||||
|
||||
bigcall Tree_GetNextSibling
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
ldi r16, 2 ; error code
|
||||
brne treeTest2_error
|
||||
|
||||
ldi yl, LOW(testTree_root)
|
||||
ldi yh, HIGH(testTree_root)
|
||||
bigcall Tree_GetFirstChildObject
|
||||
ldi r16, 3 ; error code
|
||||
cpi xl, LOW(testTree_child1)
|
||||
brne treeTest2_error
|
||||
cpi xh, HIGH(testTree_child1)
|
||||
brne treeTest2_error
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
|
||||
rcall treeTestNextSiblingIs3
|
||||
ldi r16, 4 ; error code
|
||||
brcc treeTest2_error
|
||||
|
||||
sec
|
||||
ret
|
||||
treeTest2_error:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
treeTest3:
|
||||
ldi yl, LOW(testTree_child1)
|
||||
ldi yh, HIGH(testTree_child1)
|
||||
bigcall Tree_UnlinkObject
|
||||
|
||||
rcall treeTestCheckParentNull
|
||||
ldi r16, 1 ; error code
|
||||
brcc treeTest3_error
|
||||
|
||||
bigcall Tree_GetNextSibling
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
ldi r16, 2 ; error code
|
||||
brne treeTest3_error
|
||||
|
||||
ldi yl, LOW(testTree_root)
|
||||
ldi yh, HIGH(testTree_root)
|
||||
bigcall Tree_GetFirstChildObject
|
||||
ldi r16, 3 ; error code
|
||||
cpi xl, LOW(testTree_child3)
|
||||
brne treeTest3_error
|
||||
cpi xh, HIGH(testTree_child3)
|
||||
brne treeTest3_error
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
|
||||
rcall treeTestNextSiblingIsNull
|
||||
ldi r16, 4 ; error code
|
||||
brcc treeTest3_error
|
||||
|
||||
sec
|
||||
ret
|
||||
treeTest3_error:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
treeTest4:
|
||||
ldi yl, LOW(testTree_child1)
|
||||
ldi yh, HIGH(testTree_child1)
|
||||
ldi xl, LOW(testTree_root)
|
||||
ldi xh, HIGH(testTree_root)
|
||||
bigcall Tree_AddChildObject
|
||||
|
||||
rcall treeTestCheckParentRoot
|
||||
ldi r16, 1 ; error code
|
||||
brcc treeTest4_error
|
||||
|
||||
ldi yl, LOW(testTree_root)
|
||||
ldi yh, HIGH(testTree_root)
|
||||
bigcall Tree_GetFirstChildObject
|
||||
ldi r16, 2 ; error code
|
||||
cpi xl, LOW(testTree_child3)
|
||||
brne treeTest4_error
|
||||
cpi xh, HIGH(testTree_child3)
|
||||
brne treeTest4_error
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
|
||||
rcall treeTestNextSiblingIs1
|
||||
ldi r16, 3 ; error code
|
||||
brcc treeTest4_error
|
||||
|
||||
rcall treeTestNextSiblingIsNull
|
||||
ldi r16, 4 ; error code
|
||||
brcc treeTest4_error
|
||||
|
||||
sec
|
||||
ret
|
||||
treeTest4_error:
|
||||
clc
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
treeTestCreateAndAddChild1:
|
||||
ldi yl, LOW(testTree_child1)
|
||||
ldi yh, HIGH(testTree_child1)
|
||||
ldi r18, 3
|
||||
ldi r19, 4
|
||||
rcall treeTest_Object_Init
|
||||
|
||||
ldi xl, LOW(testTree_root)
|
||||
ldi xh, HIGH(testTree_root)
|
||||
bigcall Tree_AddChildObject
|
||||
|
||||
rcall treeTestCheckParentRoot
|
||||
brcc treeTestCreateAndAddChild1_error
|
||||
sec
|
||||
ret
|
||||
treeTestCreateAndAddChild1_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
treeTestCreateAndAddChild2:
|
||||
ldi yl, LOW(testTree_child2)
|
||||
ldi yh, HIGH(testTree_child2)
|
||||
ldi r18, 5
|
||||
ldi r19, 6
|
||||
rcall treeTest_Object_Init
|
||||
|
||||
ldi xl, LOW(testTree_root)
|
||||
ldi xh, HIGH(testTree_root)
|
||||
bigcall Tree_AddChildObject
|
||||
|
||||
rcall treeTestCheckParentRoot
|
||||
brcc treeTestCreateAndAddChild2_error
|
||||
sec
|
||||
ret
|
||||
treeTestCreateAndAddChild2_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
treeTestCreateAndAddChild3:
|
||||
ldi yl, LOW(testTree_child3)
|
||||
ldi yh, HIGH(testTree_child3)
|
||||
ldi r18, 7
|
||||
ldi r19, 8
|
||||
rcall treeTest_Object_Init
|
||||
|
||||
ldi xl, LOW(testTree_root)
|
||||
ldi xh, HIGH(testTree_root)
|
||||
bigcall Tree_AddChildObject
|
||||
|
||||
rcall treeTestCheckParentRoot
|
||||
brcc treeTestCreateAndAddChild3_error
|
||||
sec
|
||||
ret
|
||||
treeTestCreateAndAddChild3_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
treeTestCheckParentNull:
|
||||
bigcall Tree_GetParentObject
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
brne treeTestCheckParentNull_error
|
||||
sec
|
||||
ret
|
||||
treeTestCheckParentNull_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
treeTestCheckParentRoot:
|
||||
bigcall Tree_GetParentObject
|
||||
cpi xl, LOW(testTree_root)
|
||||
brne treeTestCheckParentRoot_error
|
||||
cpi xh, HIGH(testTree_root)
|
||||
brne treeTestCheckParentRoot_error
|
||||
sec
|
||||
ret
|
||||
treeTestCheckParentRoot_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
treeTestNextSiblingIs1:
|
||||
bigcall Tree_GetNextSibling
|
||||
cpi xl, LOW(testTree_child1)
|
||||
brne treeTestNextSiblingIs1_error
|
||||
cpi xh, HIGH(testTree_child1)
|
||||
brne treeTestNextSiblingIs1_error
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
sec
|
||||
ret
|
||||
treeTestNextSiblingIs1_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
treeTestNextSiblingIs2:
|
||||
bigcall Tree_GetNextSibling
|
||||
cpi xl, LOW(testTree_child2)
|
||||
brne treeTestNextSiblingIs2_error
|
||||
cpi xh, HIGH(testTree_child2)
|
||||
brne treeTestNextSiblingIs2_error
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
sec
|
||||
ret
|
||||
treeTestNextSiblingIs2_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
treeTestNextSiblingIs3:
|
||||
bigcall Tree_GetNextSibling
|
||||
cpi xl, LOW(testTree_child3)
|
||||
brne treeTestNextSiblingIs3_error
|
||||
cpi xh, HIGH(testTree_child3)
|
||||
brne treeTestNextSiblingIs3_error
|
||||
mov yl, xl
|
||||
mov yh, xh
|
||||
sec
|
||||
ret
|
||||
treeTestNextSiblingIs3_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
treeTestNextSiblingIsNull:
|
||||
bigcall Tree_GetNextSibling
|
||||
mov r16, xl
|
||||
or r16, xh
|
||||
brne treeTestNextSiblingIsNull_error
|
||||
sec
|
||||
ret
|
||||
treeTestNextSiblingIsNull_error:
|
||||
clc
|
||||
ret
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user