blob: 29b2588ad141233d6659ea7e4814e5525b83f710 [file] [log] [blame]
// © 2021 and later: Unicode, Inc. and others.
// License & terms of use: https://www.unicode.org/copyright.html
package com.ibm.icu.dev.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.LinkedList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/**
* Test for {@link UnicodeKnownIssues}
*/
@RunWith(JUnit4.class)
public class TestUnicodeKnownIssues {
@Test
public void TestBasic() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
uki.logKnownIssue("a/b/c", "ICU-21756", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of Three", 3, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has atlassian URL", l.get(1).contains("browse/ICU-21756"));
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
}
@Test
public void TestNotCurtailed() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
uki.logKnownIssue("a/b/c", "ICU-21756", "Something is working!");
uki.logKnownIssue("d/e/f", "ICU-21756", "Something is working!");
uki.logKnownIssue("g/h/i", "ICU-21756", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of 5", 5, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has atlassian URL", l.get(1).contains("browse/ICU-21756"));
// Not curtailed: test shows up in a/b/c, d/e/f, and g/h/i
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
assertTrue(l.get(3) + "#3 says d/e/f", l.get(3).contains("d/e/f"));
assertTrue(l.get(4) + "#4 says g/h/i", l.get(4).contains("g/h/i"));
}
@Test
public void TestCurtailed() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(false);
uki.logKnownIssue("a/b/c", "ICU-21756", "Something is working!");
uki.logKnownIssue("d/e/f", "ICU-21756", "Something is working!");
uki.logKnownIssue("g/h/i", "ICU-21756", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count", 4, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has atlassian URL", l.get(1).contains("browse/ICU-21756"));
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
// Curtailed: the next line has "... and 2 more"
assertTrue(l.get(3) + "#3 has 'and 2 more'", l.get(3).contains("and 2 more"));
}
@Test
public void TestBare() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
uki.logKnownIssue("a/b/c", "21756", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of Three", 3, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has atlassian URL", l.get(1).contains("browse/ICU-21756"));
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
}
@Test
public void TestUnknown() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
uki.logKnownIssue("a/b/c", "zzz", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of Three", 3, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has unknown ticket", l.get(1).contains("Unknown Ticket"));
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
}
@Test
public void TestCldrLink() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
uki.logKnownIssue("a/b/c", "CLDR-9787", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of Three", 3, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has atlassian URL", l.get(1).contains("browse/CLDR-9787"));
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
}
@Test
public void TestCldrBug() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
uki.logKnownIssue("a/b/c", "cldrbug:9787", "Something is working!");
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of Three", 3, l.size());
assertTrue(l.get(0) + "#0 says Known Issues", l.get(0).contains("Known Issues"));
assertTrue(l.get(1) + "#1 has atlassian URL", l.get(1).contains("browse/CLDR-9787"));
assertTrue(l.get(2) + "#2 says a/b/c", l.get(2).contains("a/b/c"));
}
@Test
public void TestNoProblem() {
UnicodeKnownIssues uki = new UnicodeKnownIssues(true);
List<String> l = printToList(uki);
assertNotNull("no list", l);
assertEquals("message count Of Zero", 0, l.size());
}
List<String> printToList(UnicodeKnownIssues uki) {
// TODO: for JDK 1.8
// final List<String> l = new LinkedList<>();
// uki.printKnownIssues(s -> l.add(s));
// TODO: Pre JDK 1.8 below
MyConsumer m = new MyConsumer();
uki.printKnownIssues(m);
return m.l;
}
// TODO: remove for JDK 1.8
static final class MyConsumer implements UnicodeKnownIssues.Consumer<String> {
final List<String> l = new LinkedList<>();
@Override
public void accept(String t) {
l.add(t);
}
}
}