Skip to content

Commit b33ee18

Browse files
authored
bug fix for zero value toRadixString() (#606)
1 parent 86d45e1 commit b33ee18

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

lib/src/values/logic_value.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -729,9 +729,11 @@ abstract class LogicValue implements Comparable<LogicValue> {
729729
(match) => '${match.group(0)}$sepChar')
730730
.replaceAll('$sepChar<', '<'));
731731

732-
final fullString = spaceString[0] == sepChar
733-
? spaceString.substring(1, spaceString.length)
734-
: spaceString;
732+
final fullString = (spaceString.isNotEmpty)
733+
? (spaceString[0] == sepChar)
734+
? spaceString.substring(1, spaceString.length)
735+
: spaceString
736+
: '0';
735737
return '$width$radixStr$fullString';
736738
}
737739

test/logic_value_test.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,6 +2066,17 @@ void main() {
20662066
equals(lv));
20672067
}
20682068
});
2069+
test('radixString roundTrip zero corner case', () {
2070+
final lv = LogicValue.ofBigInt(BigInt.from(0), 61);
2071+
for (final i in [2, 4, 8, 10, 16]) {
2072+
expect(
2073+
LogicValue.ofRadixString(lv.toRadixString(radix: i)), equals(lv));
2074+
expect(
2075+
LogicValue.ofRadixString(
2076+
lv.toRadixString(radix: i, leadingZeros: true)),
2077+
equals(lv));
2078+
}
2079+
});
20692080
test('radixString binary expansion', () {
20702081
final lv = LogicValue.ofRadixString("12'b10z111011z00");
20712082
expect(lv.toRadixString(radix: 16), equals("12'h<10z1>d<1z00>"));

0 commit comments

Comments
 (0)