Merge lp:~yshavit/akiban-persistit/bug1042960 into lp:akiban-persistit

Proposed by Yuval Shavit
Status: Rejected
Rejected by: Yuval Shavit
Proposed branch: lp:~yshavit/akiban-persistit/bug1042960
Merge into: lp:akiban-persistit
Diff against target: 360 lines (+57/-36)
10 files modified
src/main/java/com/persistit/Value.java (+24/-3)
src/test/java/com/persistit/stress/unit/Stress10.java (+1/-1)
src/test/java/com/persistit/stress/unit/Stress11.java (+1/-1)
src/test/java/com/persistit/stress/unit/Stress2.java (+1/-1)
src/test/java/com/persistit/stress/unit/Stress2txn.java (+1/-1)
src/test/java/com/persistit/stress/unit/Stress3.java (+5/-5)
src/test/java/com/persistit/stress/unit/Stress3txn.java (+5/-5)
src/test/java/com/persistit/stress/unit/Stress9.java (+1/-1)
src/test/java/com/persistit/stress/unit/StressBase.java (+1/-1)
src/test/java/com/persistit/unit/ValueTest2.java (+17/-17)
To merge this branch: bzr merge lp:~yshavit/akiban-persistit/bug1042960
Reviewer Review Type Date Requested Status
Akiban Technologies Pending
Review via email: mp+121714@code.launchpad.net

Description of the change

Adding an argument to Value#isNull, to specify whether the Value should skip to the next field if the result is null. See attached bug for reasoning. This branch is just a suggestion, so feel free to reject if you don't like the idea.

This constitutes an API change, so it shouldn't go in until we're ready to do a version bump. Or I can add a version bump with the branch.

To post a comment you must log in.

Unmerged revisions

359. By Yuval Shavit

update isNull to take a flag specifying whether it should skip on null

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/main/java/com/persistit/Value.java'
--- src/main/java/com/persistit/Value.java 2012-08-15 16:11:36 +0000
+++ src/main/java/com/persistit/Value.java 2012-08-28 21:41:21 +0000
@@ -954,13 +954,34 @@
954 }954 }
955955
956 /**956 /**
957 * Tests whether the data held by this <code>Value</code> is null.957 * Tests whether the data held by this <code>Value</code> is null. If the data
958 * is null, and the <code>Value</code> is in stream mode, this method
959 * optionally skips to the next field. This can be useful in a loop such as:
960 * <pre>
961 * for (int i = 0; i < segments; ++i) {
962 * if (persistitValue.isNull(true)) {
963 * handleNull();
964 * }
965 * else {
966 * int intValueu = persistitValue.getInt();
967 * handleInt(intValue);
968 * }
969 * }
970 * </pre>
971 *
972 * @param skipIfNull
973 * whether to skip to the next element. This flag obeys the
974 * contract of {@link #skip()}, which is a no-op when not in
975 * stream mode.
958 * 976 *
959 * @return <code>true</code> if the current state of this <code>Value</code>977 * @return <code>true</code> if the current state of this <code>Value</code>
960 * represents <i>null</i>.978 * represents <i>null</i>.
961 */979 */
962 public boolean isNull() {980 public boolean isNull(boolean skipIfNull) {
963 return getTypeHandle() == TYPE_NULL;981 boolean result = getTypeHandle() == TYPE_NULL;
982 if (result && skipIfNull)
983 skip();
984 return result;
964 }985 }
965986
966 boolean isAntiValue() {987 boolean isAntiValue() {
967988
=== modified file 'src/test/java/com/persistit/stress/unit/Stress10.java'
--- src/test/java/com/persistit/stress/unit/Stress10.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress10.java 2012-08-28 21:41:21 +0000
@@ -114,7 +114,7 @@
114 addWork(1);114 addWork(1);
115115
116 int size1 = 0;116 int size1 = 0;
117 if (_ex.getValue().isDefined() && !_ex.getValue().isNull()) {117 if (_ex.getValue().isDefined() && !_ex.getValue().isNull(false)) {
118 size1 = _ex.getValue().getInt();118 size1 = _ex.getValue().getInt();
119 }119 }
120 _exs.fetch();120 _exs.fetch();
121121
=== modified file 'src/test/java/com/persistit/stress/unit/Stress11.java'
--- src/test/java/com/persistit/stress/unit/Stress11.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress11.java 2012-08-28 21:41:21 +0000
@@ -119,7 +119,7 @@
119 addWork(1);119 addWork(1);
120120
121 int size1 = 0;121 int size1 = 0;
122 if (_ex.getValue().isDefined() && !_ex.getValue().isNull()) {122 if (_ex.getValue().isDefined() && !_ex.getValue().isNull(false)) {
123 size1 = _ex.getValue().getInt();123 size1 = _ex.getValue().getInt();
124 }124 }
125 _exs.fetch();125 _exs.fetch();
126126
=== modified file 'src/test/java/com/persistit/stress/unit/Stress2.java'
--- src/test/java/com/persistit/stress/unit/Stress2.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress2.java 2012-08-28 21:41:21 +0000
@@ -115,7 +115,7 @@
115 addWork(1);115 addWork(1);
116116
117 int size1 = 0;117 int size1 = 0;
118 if (_ex.getValue().isDefined() && !_ex.getValue().isNull()) {118 if (_ex.getValue().isDefined() && !_ex.getValue().isNull(false)) {
119 size1 = _ex.getValue().getInt();119 size1 = _ex.getValue().getInt();
120 }120 }
121 _exs.fetch(value2);121 _exs.fetch(value2);
122122
=== modified file 'src/test/java/com/persistit/stress/unit/Stress2txn.java'
--- src/test/java/com/persistit/stress/unit/Stress2txn.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress2txn.java 2012-08-28 21:41:21 +0000
@@ -150,7 +150,7 @@
150 addWork(1);150 addWork(1);
151151
152 int size1 = 0;152 int size1 = 0;
153 if (_ex.getValue().isDefined() && !_ex.getValue().isNull()) {153 if (_ex.getValue().isDefined() && !_ex.getValue().isNull(false)) {
154 size1 = _ex.getValue().getInt();154 size1 = _ex.getValue().getInt();
155 }155 }
156 _exs.fetch(value2);156 _exs.fetch(value2);
157157
=== modified file 'src/test/java/com/persistit/stress/unit/Stress3.java'
--- src/test/java/com/persistit/stress/unit/Stress3.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress3.java 2012-08-28 21:41:21 +0000
@@ -148,7 +148,7 @@
148 ex1.clear().append("byName").append(s).fetch();148 ex1.clear().append("byName").append(s).fetch();
149 addWork(1);149 addWork(1);
150150
151 if (!ex1.getValue().isDefined() || ex1.getValue().isNull()) {151 if (!ex1.getValue().isDefined() || ex1.getValue().isNull(false)) {
152 atomic = _counter.incrementAndGet();152 atomic = _counter.incrementAndGet();
153 ex1.getValue().put(atomic);153 ex1.getValue().put(atomic);
154 ex1.store();154 ex1.store();
@@ -192,7 +192,7 @@
192 ex1.clear().append("byName").append(s).fetch();192 ex1.clear().append("byName").append(s).fetch();
193 addWork(1);193 addWork(1);
194194
195 if (!ex1.getValue().isDefined() || ex1.getValue().isNull()) {195 if (!ex1.getValue().isDefined() || ex1.getValue().isNull(false)) {
196 throw new RuntimeException("Expected filename <" + s + "> was not found - key="196 throw new RuntimeException("Expected filename <" + s + "> was not found - key="
197 + ex1.getKey());197 + ex1.getKey());
198 }198 }
@@ -202,7 +202,7 @@
202 ex2.clear().append("byCounter").append(atomic).fetch(value2);202 ex2.clear().append("byCounter").append(atomic).fetch(value2);
203 addWork(1);203 addWork(1);
204204
205 if (!value2.isDefined() || value2.isNull()) {205 if (!value2.isDefined() || value2.isNull(false)) {
206 throw new RuntimeException("Expected value for byCounter " + atomic206 throw new RuntimeException("Expected value for byCounter " + atomic
207 + " was not found - key=" + ex2.getKey());207 + " was not found - key=" + ex2.getKey());
208 }208 }
@@ -221,7 +221,7 @@
221 ex3.clear().append("byReversedName").append(_sb1).fetch();221 ex3.clear().append("byReversedName").append(_sb1).fetch();
222 addWork(1);222 addWork(1);
223223
224 if (!ex3.getValue().isDefined() || ex3.getValue().isNull()224 if (!ex3.getValue().isDefined() || ex3.getValue().isNull(false)
225 || (ex3.getValue().getLong() != atomic)) {225 || (ex3.getValue().getLong() != atomic)) {
226 throw new RuntimeException("Missing or incorrect value " + ex3.getValue() + " should be "226 throw new RuntimeException("Missing or incorrect value " + ex3.getValue() + " should be "
227 + atomic + " key=" + ex3.getKey());227 + atomic + " key=" + ex3.getKey());
@@ -271,7 +271,7 @@
271 ex1.clear().append("byName").append(s).fetch();271 ex1.clear().append("byName").append(s).fetch();
272 addWork(1);272 addWork(1);
273273
274 if (!ex1.getValue().isDefined() || ex1.getValue().isNull()) {274 if (!ex1.getValue().isDefined() || ex1.getValue().isNull(false)) {
275 fail("Expected filename <" + s + "> was not found - key=" + ex1.getKey()275 fail("Expected filename <" + s + "> was not found - key=" + ex1.getKey()
276 + " keyInteger=" + keyInteger + " at counter=" + _count);276 + " keyInteger=" + keyInteger + " at counter=" + _count);
277 break;277 break;
278278
=== modified file 'src/test/java/com/persistit/stress/unit/Stress3txn.java'
--- src/test/java/com/persistit/stress/unit/Stress3txn.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress3txn.java 2012-08-28 21:41:21 +0000
@@ -135,7 +135,7 @@
135 txn.begin();135 txn.begin();
136 try {136 try {
137 ex1.clear().append("byName").append(s).fetch();137 ex1.clear().append("byName").append(s).fetch();
138 if (!ex1.getValue().isDefined() || ex1.getValue().isNull()) {138 if (!ex1.getValue().isDefined() || ex1.getValue().isNull(false)) {
139 atomic = _counter.incrementAndGet();139 atomic = _counter.incrementAndGet();
140 ex1.getValue().put(atomic);140 ex1.getValue().put(atomic);
141 ex1.store();141 ex1.store();
@@ -193,7 +193,7 @@
193 ex1.clear().append("byName").append(s).fetch();193 ex1.clear().append("byName").append(s).fetch();
194 addWork(1);194 addWork(1);
195195
196 if (!ex1.getValue().isDefined() || ex1.getValue().isNull()) {196 if (!ex1.getValue().isDefined() || ex1.getValue().isNull(false)) {
197 throw new RuntimeException("Expected filename <" + s + "> was not found - key="197 throw new RuntimeException("Expected filename <" + s + "> was not found - key="
198 + ex1.getKey());198 + ex1.getKey());
199 }199 }
@@ -203,7 +203,7 @@
203 ex2.clear().append("byCounter").append(atomic).fetch(value2);203 ex2.clear().append("byCounter").append(atomic).fetch(value2);
204 addWork(1);204 addWork(1);
205205
206 if (!value2.isDefined() || value2.isNull()) {206 if (!value2.isDefined() || value2.isNull(false)) {
207 throw new RuntimeException("Expected value for byCounter " + atomic207 throw new RuntimeException("Expected value for byCounter " + atomic
208 + " was not found - key=" + ex2.getKey());208 + " was not found - key=" + ex2.getKey());
209 }209 }
@@ -222,7 +222,7 @@
222 ex3.clear().append("byReversedName").append(_sb1).fetch();222 ex3.clear().append("byReversedName").append(_sb1).fetch();
223 addWork(1);223 addWork(1);
224224
225 if (!ex3.getValue().isDefined() || ex3.getValue().isNull()225 if (!ex3.getValue().isDefined() || ex3.getValue().isNull(false)
226 || (ex3.getValue().getLong() != atomic)) {226 || (ex3.getValue().getLong() != atomic)) {
227 throw new RuntimeException("Missing or incorrect value " + ex3.getValue() + " should be "227 throw new RuntimeException("Missing or incorrect value " + ex3.getValue() + " should be "
228 + atomic + " key=" + ex3.getKey());228 + atomic + " key=" + ex3.getKey());
@@ -272,7 +272,7 @@
272 ex1.clear().append("byName").append(s).fetch();272 ex1.clear().append("byName").append(s).fetch();
273 addWork(1);273 addWork(1);
274274
275 if (!ex1.getValue().isDefined() || ex1.getValue().isNull()) {275 if (!ex1.getValue().isDefined() || ex1.getValue().isNull(false)) {
276 fail("Expected filename <" + s + "> was not found - key=" + ex1.getKey()276 fail("Expected filename <" + s + "> was not found - key=" + ex1.getKey()
277 + " keyInteger=" + keyInteger + " at counter=" + _count);277 + " keyInteger=" + keyInteger + " at counter=" + _count);
278 break;278 break;
279279
=== modified file 'src/test/java/com/persistit/stress/unit/Stress9.java'
--- src/test/java/com/persistit/stress/unit/Stress9.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/Stress9.java 2012-08-28 21:41:21 +0000
@@ -126,7 +126,7 @@
126 addWork(1);126 addWork(1);
127127
128 int size1 = 0;128 int size1 = 0;
129 if (_ex.getValue().isDefined() && !_ex.getValue().isNull()) {129 if (_ex.getValue().isDefined() && !_ex.getValue().isNull(false)) {
130 size1 = _ex.getValue().getInt();130 size1 = _ex.getValue().getInt();
131 }131 }
132 _exs.fetch(value2);132 _exs.fetch(value2);
133133
=== modified file 'src/test/java/com/persistit/stress/unit/StressBase.java'
--- src/test/java/com/persistit/stress/unit/StressBase.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/stress/unit/StressBase.java 2012-08-28 21:41:21 +0000
@@ -85,7 +85,7 @@
8585
86 protected void compareValues(final Value value1, final Value value2) {86 protected void compareValues(final Value value1, final Value value2) {
87 boolean ok = true;87 boolean ok = true;
88 if (!value2.isDefined() || value2.isNull()) {88 if (!value2.isDefined() || value2.isNull(false)) {
89 fail("value not expected to be null");89 fail("value not expected to be null");
90 ok = false;90 ok = false;
91 } else if (!value1.equals(value2)) {91 } else if (!value1.equals(value2)) {
9292
=== modified file 'src/test/java/com/persistit/unit/ValueTest2.java'
--- src/test/java/com/persistit/unit/ValueTest2.java 2012-08-15 16:11:36 +0000
+++ src/test/java/com/persistit/unit/ValueTest2.java 2012-08-28 21:41:21 +0000
@@ -95,21 +95,21 @@
95 value.put(null);95 value.put(null);
96 value.trim();96 value.trim();
97 assertEquals(Void.TYPE, value.getType());97 assertEquals(Void.TYPE, value.getType());
98 assertEquals(true, value.isNull());98 assertEquals(true, value.isNull(false));
99 assertEquals(true, value.isDefined());99 assertEquals(true, value.isDefined());
100 assertEquals(value.get(), null);100 assertEquals(value.get(), null);
101101
102 value.put(true);102 value.put(true);
103 value.trim();103 value.trim();
104 assertEquals(value.getType(), Boolean.TYPE);104 assertEquals(value.getType(), Boolean.TYPE);
105 assertEquals(value.isNull(), false);105 assertEquals(value.isNull(false), false);
106 assertEquals(value.isDefined(), true);106 assertEquals(value.isDefined(), true);
107 assertEquals(value.getBoolean(), true);107 assertEquals(value.getBoolean(), true);
108 assertEquals(value.get(), Boolean.TRUE);108 assertEquals(value.get(), Boolean.TRUE);
109109
110 value.put(false);110 value.put(false);
111 assertEquals(value.getType(), Boolean.TYPE);111 assertEquals(value.getType(), Boolean.TYPE);
112 assertEquals(value.isNull(), false);112 assertEquals(value.isNull(false), false);
113 assertEquals(value.isDefined(), true);113 assertEquals(value.isDefined(), true);
114 assertEquals(value.getBoolean(), false);114 assertEquals(value.getBoolean(), false);
115 assertEquals(value.get(), Boolean.FALSE);115 assertEquals(value.get(), Boolean.FALSE);
@@ -117,70 +117,70 @@
117 value.put(Boolean.TRUE);117 value.put(Boolean.TRUE);
118 value.trim();118 value.trim();
119 assertEquals(value.getType(), Boolean.class);119 assertEquals(value.getType(), Boolean.class);
120 assertEquals(value.isNull(), false);120 assertEquals(value.isNull(false), false);
121 assertEquals(value.isDefined(), true);121 assertEquals(value.isDefined(), true);
122 assertEquals(value.getBoolean(), true);122 assertEquals(value.getBoolean(), true);
123 assertEquals(value.get(), Boolean.TRUE);123 assertEquals(value.get(), Boolean.TRUE);
124124
125 value.put(Boolean.FALSE);125 value.put(Boolean.FALSE);
126 assertEquals(value.getType(), Boolean.class);126 assertEquals(value.getType(), Boolean.class);
127 assertEquals(value.isNull(), false);127 assertEquals(value.isNull(false), false);
128 assertEquals(value.isDefined(), true);128 assertEquals(value.isDefined(), true);
129 assertEquals(value.getBoolean(), false);129 assertEquals(value.getBoolean(), false);
130 assertEquals(value.get(), Boolean.FALSE);130 assertEquals(value.get(), Boolean.FALSE);
131131
132 value.put((byte) 123);132 value.put((byte) 123);
133 assertEquals(value.getType(), Byte.TYPE);133 assertEquals(value.getType(), Byte.TYPE);
134 assertEquals(value.isNull(), false);134 assertEquals(value.isNull(false), false);
135 assertEquals(value.isDefined(), true);135 assertEquals(value.isDefined(), true);
136 assertEquals(value.getByte(), (byte) 123);136 assertEquals(value.getByte(), (byte) 123);
137 assertEquals(value.get(), new Byte((byte) 123));137 assertEquals(value.get(), new Byte((byte) 123));
138138
139 value.put(new Byte((byte) 123));139 value.put(new Byte((byte) 123));
140 assertEquals(value.getType(), Byte.class);140 assertEquals(value.getType(), Byte.class);
141 assertEquals(value.isNull(), false);141 assertEquals(value.isNull(false), false);
142 assertEquals(value.isDefined(), true);142 assertEquals(value.isDefined(), true);
143 assertEquals(value.getByte(), (byte) 123);143 assertEquals(value.getByte(), (byte) 123);
144 assertEquals(value.get(), new Byte((byte) 123));144 assertEquals(value.get(), new Byte((byte) 123));
145145
146 value.put((short) 234);146 value.put((short) 234);
147 assertEquals(value.getType(), Short.TYPE);147 assertEquals(value.getType(), Short.TYPE);
148 assertEquals(value.isNull(), false);148 assertEquals(value.isNull(false), false);
149 assertEquals(value.isDefined(), true);149 assertEquals(value.isDefined(), true);
150 assertEquals(value.getShort(), (short) 234);150 assertEquals(value.getShort(), (short) 234);
151 assertEquals(value.get(), new Short((short) 234));151 assertEquals(value.get(), new Short((short) 234));
152152
153 value.put(new Short((short) 234));153 value.put(new Short((short) 234));
154 assertEquals(value.getType(), Short.class);154 assertEquals(value.getType(), Short.class);
155 assertEquals(value.isNull(), false);155 assertEquals(value.isNull(false), false);
156 assertEquals(value.isDefined(), true);156 assertEquals(value.isDefined(), true);
157 assertEquals(value.getShort(), (short) 234);157 assertEquals(value.getShort(), (short) 234);
158 assertEquals(value.get(), new Short((short) 234));158 assertEquals(value.get(), new Short((short) 234));
159159
160 value.put((char) 345);160 value.put((char) 345);
161 assertEquals(value.getType(), Character.TYPE);161 assertEquals(value.getType(), Character.TYPE);
162 assertEquals(value.isNull(), false);162 assertEquals(value.isNull(false), false);
163 assertEquals(value.isDefined(), true);163 assertEquals(value.isDefined(), true);
164 assertEquals(value.getChar(), (char) 345);164 assertEquals(value.getChar(), (char) 345);
165 assertEquals(value.get(), new Character((char) 345));165 assertEquals(value.get(), new Character((char) 345));
166166
167 value.put(new Character((char) 345));167 value.put(new Character((char) 345));
168 assertEquals(value.getType(), Character.class);168 assertEquals(value.getType(), Character.class);
169 assertEquals(value.isNull(), false);169 assertEquals(value.isNull(false), false);
170 assertEquals(value.isDefined(), true);170 assertEquals(value.isDefined(), true);
171 assertEquals(value.getChar(), (char) 345);171 assertEquals(value.getChar(), (char) 345);
172 assertEquals(value.get(), new Character((char) 345));172 assertEquals(value.get(), new Character((char) 345));
173173
174 value.put(456);174 value.put(456);
175 assertEquals(value.getType(), Integer.TYPE);175 assertEquals(value.getType(), Integer.TYPE);
176 assertEquals(value.isNull(), false);176 assertEquals(value.isNull(false), false);
177 assertEquals(value.isDefined(), true);177 assertEquals(value.isDefined(), true);
178 assertEquals(value.getInt(), 456);178 assertEquals(value.getInt(), 456);
179 assertEquals(value.get(), new Integer(456));179 assertEquals(value.get(), new Integer(456));
180180
181 value.put(new Integer(456));181 value.put(new Integer(456));
182 assertEquals(value.getType(), Integer.class);182 assertEquals(value.getType(), Integer.class);
183 assertEquals(value.isNull(), false);183 assertEquals(value.isNull(false), false);
184 assertEquals(value.isDefined(), true);184 assertEquals(value.isDefined(), true);
185 value.trim();185 value.trim();
186 assertEquals(value.getInt(), 456);186 assertEquals(value.getInt(), 456);
@@ -188,28 +188,28 @@
188188
189 value.put((float) 567);189 value.put((float) 567);
190 assertEquals(value.getType(), Float.TYPE);190 assertEquals(value.getType(), Float.TYPE);
191 assertEquals(value.isNull(), false);191 assertEquals(value.isNull(false), false);
192 assertEquals(value.isDefined(), true);192 assertEquals(value.isDefined(), true);
193 assertEquals(value.getFloat(), 567, 0.0001f);193 assertEquals(value.getFloat(), 567, 0.0001f);
194 assertEquals(value.get(), new Float(567));194 assertEquals(value.get(), new Float(567));
195195
196 value.put(new Float(567));196 value.put(new Float(567));
197 assertEquals(value.getType(), Float.class);197 assertEquals(value.getType(), Float.class);
198 assertEquals(value.isNull(), false);198 assertEquals(value.isNull(false), false);
199 assertEquals(value.isDefined(), true);199 assertEquals(value.isDefined(), true);
200 assertEquals(value.getFloat(), 567, 0.0001f);200 assertEquals(value.getFloat(), 567, 0.0001f);
201 assertEquals(value.get(), new Float(567));201 assertEquals(value.get(), new Float(567));
202202
203 value.put((double) 678);203 value.put((double) 678);
204 assertEquals(value.getType(), Double.TYPE);204 assertEquals(value.getType(), Double.TYPE);
205 assertEquals(value.isNull(), false);205 assertEquals(value.isNull(false), false);
206 assertEquals(value.isDefined(), true);206 assertEquals(value.isDefined(), true);
207 assertEquals(value.getDouble(), 678, 0.0001f);207 assertEquals(value.getDouble(), 678, 0.0001f);
208 assertEquals(value.get(), new Double(678));208 assertEquals(value.get(), new Double(678));
209209
210 value.put(new Double(678));210 value.put(new Double(678));
211 assertEquals(value.getType(), Double.class);211 assertEquals(value.getType(), Double.class);
212 assertEquals(value.isNull(), false);212 assertEquals(value.isNull(false), false);
213 assertEquals(value.isDefined(), true);213 assertEquals(value.isDefined(), true);
214 value.trim(100);214 value.trim(100);
215 assertEquals(value.getDouble(), 678, 0.0001f);215 assertEquals(value.getDouble(), 678, 0.0001f);

Subscribers

People subscribed via source and target branches