Skip to content

Commit 52f5d80

Browse files
Fix m2json case where val is empty
1 parent 8063131 commit 52f5d80

File tree

2 files changed

+31
-23
lines changed

2 files changed

+31
-23
lines changed

plotly/plotly_aux/Test_m2json.m

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,132 +3,138 @@
33
function testLowPrecisionInRange0to10(tc)
44
values = 1 + (1:5) + 0.234;
55
expected = "[2.234,3.234,4.234,5.234,6.234]";
6-
tc.verifyEqual(string(m2json(values)), expected);
6+
tc.verifyEqual(m2json(values), expected);
77
end
88

99
function testInRange0to10(tc)
1010
values = 1 + (1:5) + 0.23456789;
1111
expected = "[2.23456789,3.23456789,4.23456789,5.23456789," ...
1212
+ "6.23456789]";
13-
tc.verifyEqual(string(m2json(values)), expected);
13+
tc.verifyEqual(m2json(values), expected);
1414
end
1515

1616
function test2dArrayInRange0to10(tc)
1717
values = 1 + (1:5) + (0:1)' + 0.234;
1818
expected = "[[2.234,3.234,4.234,5.234,6.234]," ...
1919
+ "[3.234,4.234,5.234,6.234,7.234]]";
20-
tc.verifyEqual(string(m2json(values)), expected);
20+
tc.verifyEqual(m2json(values), expected);
2121
end
2222

2323
function testLowPrecisionInRange1e6to1e5(tc)
2424
values = 1e-6 * (1 + (1:5) + 0.234);
2525
expected = "[2.234e-06,3.234e-06,4.234e-06,5.234e-06," ...
2626
+ "6.234e-06]";
27-
tc.verifyEqual(string(m2json(values)), expected);
27+
tc.verifyEqual(m2json(values), expected);
2828
end
2929

3030
function testInRange1e6to1e5(tc)
3131
values = 1e-6 * (1 + (1:5) + 0.23456789);
3232
expected = "[2.23456789e-06,3.23456789e-06,4.23456789e-06," ...
3333
+ "5.23456789e-06,6.23456789e-06]";
34-
tc.verifyEqual(string(m2json(values)), expected);
34+
tc.verifyEqual(m2json(values), expected);
3535
end
3636

3737
function testInRange1e14Plus0to1(tc)
3838
values = 1e14 + (1:5) + 0.23456789;
3939
expected = "[100000000000001,100000000000002,"...
4040
+ "100000000000003,100000000000004,100000000000005]";
41-
tc.verifyEqual(string(m2json(values)), expected);
41+
tc.verifyEqual(m2json(values), expected);
4242
end
4343

4444
function testInRange1e14Plus1e7Plus0to1(tc)
4545
values = 1e14 + 1e7 + (1:5) + 0.23456789;
4646
expected = "[100000010000001,100000010000002," ...
4747
+ "100000010000003,100000010000004,100000010000005]";
48-
tc.verifyEqual(string(m2json(values)), expected);
48+
tc.verifyEqual(m2json(values), expected);
4949
end
5050

5151
function testLogScaledVariables(tc)
5252
values = 1e14 + 10.^(1:5) + 0.23456789;
5353
expected = "[100000000000010,100000000000100," ...
5454
+ "100000000001000,100000000010000,100000000100000]";
55-
tc.verifyEqual(string(m2json(values)), expected);
55+
tc.verifyEqual(m2json(values), expected);
5656
end
5757

5858
function testLowPrecisionInRangeMinus10to0(tc)
5959
values = -(1 + (1:5) + 0.234);
6060
expected = "[-2.234,-3.234,-4.234,-5.234,-6.234]";
61-
tc.verifyEqual(string(m2json(values)), expected);
61+
tc.verifyEqual(m2json(values), expected);
6262
end
6363

6464
function testInRangeMinus10to0(tc)
6565
values = -(1 + (1:5) + 0.23456789);
6666
expected = "[-2.23456789,-3.23456789,-4.23456789," ...
6767
+ "-5.23456789,-6.23456789]";
68-
tc.verifyEqual(string(m2json(values)), expected);
68+
tc.verifyEqual(m2json(values), expected);
6969
end
7070

7171
function testInRangeMinus1e5toMinus1e6(tc)
7272
values = -1e-6 * (1 + (1:5) + 0.23456789);
7373
expected = "[-2.23456789e-06,-3.23456789e-06," ...
7474
+ "-4.23456789e-06,-5.23456789e-06,-6.23456789e-06]";
75-
tc.verifyEqual(string(m2json(values)), expected);
75+
tc.verifyEqual(m2json(values), expected);
7676
end
7777

7878
function testInRangeMinus1e14Plus0to1(tc)
7979
values = -1e14 + (1:5) + 0.23456789;
8080
expected = "[-99999999999998.8,-99999999999997.8," ...
8181
+ "-99999999999996.8,-99999999999995.8," ...
8282
+ "-99999999999994.8]";
83-
tc.verifyEqual(string(m2json(values)), expected);
83+
tc.verifyEqual(m2json(values), expected);
84+
end
85+
86+
function testEmpty(tc)
87+
values = [];
88+
expected = "[]";
89+
tc.verifyEqual(m2json(values), expected);
8490
end
8591

8692
function testCell(tc)
8793
values = {1, "text", [1,2,3]};
8894
expected = "[1, ""text"", [1,2,3]]";
89-
tc.verifyEqual(string(m2json(values)), expected);
95+
tc.verifyEqual(m2json(values), expected);
9096
end
9197

9298
function testStruct(tc)
9399
values = struct("a", 1, "b", "text");
94100
expected = "{""a"" : 1, ""b"" : ""text""}";
95-
tc.verifyEqual(string(m2json(values)), expected);
101+
tc.verifyEqual(m2json(values), expected);
96102
end
97103

98104
function testDatetime(tc)
99105
value = datetime("2023-05-01 12:30:45");
100106
expected = """2023-05-01 12:30:45""";
101-
tc.verifyEqual(string(m2json(value)), expected);
107+
tc.verifyEqual(m2json(value), expected);
102108
end
103109

104110
function testDate(tc)
105111
value = datetime("2023-05-01");
106112
expected = """2023-05-01""";
107-
tc.verifyEqual(string(m2json(value)), expected);
113+
tc.verifyEqual(m2json(value), expected);
108114
end
109115

110116
function testLogicalTrue(tc)
111117
value = true;
112118
expected = "true";
113-
tc.verifyEqual(string(m2json(value)), expected);
119+
tc.verifyEqual(m2json(value), expected);
114120
end
115121

116122
function testLogicalFalse(tc)
117123
value = false;
118124
expected = "false";
119-
tc.verifyEqual(string(m2json(value)), expected);
125+
tc.verifyEqual(m2json(value), expected);
120126
end
121127

122128
function testCharArray(tc)
123129
value = 'Hello';
124130
expected = """Hello""";
125-
tc.verifyEqual(string(m2json(value)), expected);
131+
tc.verifyEqual(m2json(value), expected);
126132
end
127133

128134
function testString(tc)
129135
value = "World";
130136
expected = """World""";
131-
tc.verifyEqual(string(m2json(value)), expected);
137+
tc.verifyEqual(m2json(value), expected);
132138
end
133139
end
134140
end

plotly/plotly_aux/m2json.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
elseif iscell(val)
55
valstr = cell2json(val);
66
elseif isa(val, "numeric")
7+
if isempty(val)
8+
valstr = "[]";
9+
return;
10+
end
711
sz = size(val);
812
if isa(val,"single")
913
numDigits = 7;
@@ -25,8 +29,6 @@
2529
end
2630
if length(val)>1
2731
valstr = "[" + valstr + "]";
28-
elseif isempty(val)
29-
valstr = "[]";
3032
end
3133
valstr = strrep(valstr,"-Inf", "null");
3234
valstr = strrep(valstr, "Inf", "null");
@@ -38,7 +40,7 @@
3840
valstr = cell2json(cellstr(val));
3941
else
4042
val = checkescape(val); % add escape characters
41-
valstr = sprintf('"%s"', val);
43+
valstr = sprintf("""%s""", val);
4244
end
4345
elseif islogical(val)
4446
if val

0 commit comments

Comments
 (0)