OLD | NEW |
(Empty) | |
| 1 // © 2017 and later: Unicode, Inc. and others. |
| 2 // License & terms of use: http://www.unicode.org/copyright.html#License |
| 3 package com.ibm.icu.dev.test.number; |
| 4 |
| 5 import static org.junit.Assert.assertEquals; |
| 6 |
| 7 import org.junit.Test; |
| 8 |
| 9 import com.ibm.icu.impl.number.parse.StringSegment; |
| 10 |
| 11 /** |
| 12 * @author sffc |
| 13 * |
| 14 */ |
| 15 public class StringSegmentTest { |
| 16 static final String SAMPLE_STRING = "📻 radio 📻"; |
| 17 |
| 18 @Test |
| 19 public void testOffset() { |
| 20 StringSegment segment = new StringSegment(SAMPLE_STRING); |
| 21 assertEquals(0, segment.getOffset()); |
| 22 segment.adjustOffset(3); |
| 23 assertEquals(3, segment.getOffset()); |
| 24 segment.adjustOffset(2); |
| 25 assertEquals(5, segment.getOffset()); |
| 26 segment.setOffset(4); |
| 27 assertEquals(4, segment.getOffset()); |
| 28 } |
| 29 |
| 30 @Test |
| 31 public void testLength() { |
| 32 StringSegment segment = new StringSegment(SAMPLE_STRING); |
| 33 assertEquals(11, segment.length()); |
| 34 segment.adjustOffset(3); |
| 35 assertEquals(8, segment.length()); |
| 36 segment.setLength(4); |
| 37 assertEquals(4, segment.length()); |
| 38 segment.setOffset(5); |
| 39 assertEquals(2, segment.length()); |
| 40 segment.resetLength(); |
| 41 assertEquals(6, segment.length()); |
| 42 } |
| 43 |
| 44 @Test |
| 45 public void testCharAt() { |
| 46 StringSegment segment = new StringSegment(SAMPLE_STRING); |
| 47 assertCharSequenceEquals(SAMPLE_STRING, segment); |
| 48 segment.adjustOffset(3); |
| 49 assertCharSequenceEquals("radio 📻", segment); |
| 50 segment.setLength(5); |
| 51 assertCharSequenceEquals("radio", segment); |
| 52 } |
| 53 |
| 54 @Test |
| 55 public void testGetCodePoint() { |
| 56 StringSegment segment = new StringSegment(SAMPLE_STRING); |
| 57 assertEquals(0x1F4FB, segment.getCodePoint()); |
| 58 segment.setLength(1); |
| 59 assertEquals(-1, segment.getCodePoint()); |
| 60 segment.resetLength(); |
| 61 segment.adjustOffset(1); |
| 62 assertEquals(-1, segment.getCodePoint()); |
| 63 segment.adjustOffset(1); |
| 64 assertEquals(0x20, segment.getCodePoint()); |
| 65 } |
| 66 |
| 67 @Test |
| 68 public void testCommonPrefixLength() { |
| 69 StringSegment segment = new StringSegment(SAMPLE_STRING); |
| 70 assertEquals(11, segment.getCommonPrefixLength(SAMPLE_STRING)); |
| 71 assertEquals(4, segment.getCommonPrefixLength("📻 r")); |
| 72 assertEquals(3, segment.getCommonPrefixLength("📻 x")); |
| 73 assertEquals(0, segment.getCommonPrefixLength("x")); |
| 74 assertEquals(0, segment.getCommonPrefixLength("")); |
| 75 segment.adjustOffset(3); |
| 76 assertEquals(0, segment.getCommonPrefixLength("RADiO")); |
| 77 assertEquals(5, segment.getCommonPrefixLength("radio")); |
| 78 assertEquals(2, segment.getCommonPrefixLength("rafio")); |
| 79 assertEquals(0, segment.getCommonPrefixLength("fadio")); |
| 80 assertEquals(0, segment.getCommonPrefixLength("")); |
| 81 segment.setLength(3); |
| 82 assertEquals(3, segment.getCommonPrefixLength("radio")); |
| 83 assertEquals(2, segment.getCommonPrefixLength("rafio")); |
| 84 assertEquals(0, segment.getCommonPrefixLength("fadio")); |
| 85 assertEquals(0, segment.getCommonPrefixLength("")); |
| 86 segment.resetLength(); |
| 87 segment.setOffset(11); // end of string |
| 88 assertEquals(0, segment.getCommonPrefixLength("foo")); |
| 89 } |
| 90 |
| 91 private static void assertCharSequenceEquals(CharSequence a, CharSequence b)
{ |
| 92 assertEquals(a.length(), b.length()); |
| 93 for (int i = 0; i < a.length(); i++) { |
| 94 assertEquals(a.charAt(i), b.charAt(i)); |
| 95 } |
| 96 } |
| 97 } |
OLD | NEW |