File tree Expand file tree Collapse file tree 4 files changed +22
-10
lines changed Expand file tree Collapse file tree 4 files changed +22
-10
lines changed Original file line number Diff line number Diff line change @@ -108,6 +108,8 @@ bash_object.traverse-get() {
108
108
return
109
109
;;
110
110
array)
111
+ declare -ga REPLY=()
112
+ # shellcheck disable=SC2190
111
113
REPLY=(" ${current_object[@]} " )
112
114
;;
113
115
* )
@@ -155,6 +157,7 @@ bash_object.traverse-get() {
155
157
bash_object.util.traverse_fail ' ERROR_VALUE_INCORRECT_TYPE' " Queried for array, but found string '$value '"
156
158
return
157
159
elif [ " $final_value_type " = string ]; then
160
+ # shellcheck disable=SC2178
158
161
REPLY=" $value "
159
162
fi
160
163
fi
Original file line number Diff line number Diff line change @@ -64,6 +64,7 @@ bash_object.traverse-set() {
64
64
65
65
# 1. Create object
66
66
if ! eval " declare -gA $new_current_object_name =()" ; then
67
+ # TODO: error
67
68
printf ' %s\n' ' Error: bash-object: eval declare failed'
68
69
return 1
69
70
fi
@@ -73,7 +74,8 @@ bash_object.traverse-set() {
73
74
74
75
local -n new_current_object=" $new_current_object_name "
75
76
local -n object_to_copy=" $final_value "
76
- for key in " ${! new_current_object[@]} " ; do
77
+ # test if the object_to_copy is of the right type
78
+ for key in " ${! object_to_copy[@]} " ; do
77
79
new_current_object[" $key " ]=" ${object_to_copy["$key"]} "
78
80
done
79
81
elif [ " $final_value_type " = array ]; then
Original file line number Diff line number Diff line change 3
3
load ' ./util/init.sh'
4
4
5
5
@test " correctly sets object" {
6
- declare -a obj=([omicron]=pi rho=sigma tau=upsilon)
6
+ declare -A obj=([omicron]=pi [ rho] =sigma [ tau] =upsilon)
7
7
declare -A OBJECT=()
8
8
9
- bash_object.traverse-set object OBJECT ' .obj' obj
9
+ bash_object.traverse-set object ' OBJECT' ' .obj' obj
10
10
11
- bash_object.traverse-get object OBJECT ' .obj'
12
- assert [ ${# REPLY} -eq 3 ]
11
+ bash_object.traverse-get object ' OBJECT' ' .obj'
12
+ assert [ ${# REPLY[@] } -eq 3 ]
13
13
assert [ " ${REPLY[omicron]} " = pi ]
14
14
assert [ " ${REPLY[rho]} " = sigma ]
15
15
assert [ " ${REPLY[tau]} " = upsilon ]
16
16
17
- bash_object.traverse-get string OBJECT ' .obj.rho'
17
+ bash_object.traverse-get string ' OBJECT' ' .obj.rho'
18
18
assert [ " $REPLY " = sigma ]
19
19
}
Original file line number Diff line number Diff line change @@ -63,14 +63,21 @@ load './util/init.sh'
63
63
declare -A OBJECT=([omicron]=$' \x1C\x1D type=object;&SUB_OBJECT' )
64
64
65
65
bash_object.traverse-set string ' OBJECT' ' .omicron.pi.rho' ' sigma'
66
-
67
66
bash_object.traverse-get string ' OBJECT' ' .omicron.pi.rho'
68
67
assert [ " $REPLY " = ' sigma' ]
69
-
70
- bash_object.traverse-get object ' OBJECT' ' .omicron.pi'
71
- assert [ " ${REPLY[rho]} " = ' sigma' ]
72
68
}
73
69
70
+ # @test "correctly sets string in subobject 2" {
71
+ # declare -A OBJECT=()
72
+
73
+ # bash_object.traverse-set object 'OBJECT' '.omicron'
74
+ # bash_object.traverse-set object 'OBJECT' '.omicron.pi'
75
+
76
+ # bash_object.traverse-set string 'OBJECT' '.omicron.pi.rho' 'sigma'
77
+ # bash_object.traverse-get string 'OBJECT' '.omicron.pi.rho'
78
+ # assert [ "$REPLY" = 'sigma' ]
79
+ # }
80
+
74
81
@test " correctly sets 2 strings in subobject" {
75
82
declare -A SUB_SUB_OBJECT=()
76
83
declare -A SUB_OBJECT=([pi]=$' \x1C\x1D type=object;&SUB_SUB_OBJECT' )
You can’t perform that action at this time.
0 commit comments