test/java/util/StringJoiner/MergeTest.java

Print this page

        

*** 21,31 **** * questions. */ /** * @test ! * @bug 8017231 8020977 * @summary test StringJoiner::merge * @run testng MergeTest */ import java.util.StringJoiner; --- 21,31 ---- * questions. */ /** * @test ! * @bug 8017231 8020977 8054221 * @summary test StringJoiner::merge * @run testng MergeTest */ import java.util.StringJoiner;
*** 34,133 **** import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; @Test public class MergeTest { public void testNull() { StringJoiner sj = new StringJoiner(",", "{", "}"); - try { sj.merge(null); - fail("Should throw NullPointerException!"); - } catch (NullPointerException npe) { - // expected - } } public void testSimple() { ! StringJoiner sj = new StringJoiner(",", "{", "}"); ! StringJoiner other = new StringJoiner(",", "[", "]"); Stream.of("a", "b", "c").forEachOrdered(sj::add); Stream.of("d", "e", "f").forEachOrdered(other::add); sj.merge(other); ! assertEquals(sj.toString(), "{a,b,c,d,e,f}"); } public void testEmptyOther() { ! StringJoiner sj = new StringJoiner(",", "{", "}"); ! StringJoiner other = new StringJoiner(",", "[", "]"); Stream.of("a", "b", "c").forEachOrdered(sj::add); sj.merge(other); ! assertEquals(sj.toString(), "{a,b,c}"); other.setEmptyValue("EMPTY"); sj.merge(other); ! assertEquals(sj.toString(), "{a,b,c}"); } public void testEmptyThis() { ! StringJoiner sj = new StringJoiner(",", "{", "}"); ! StringJoiner other = new StringJoiner(":", "[", "]"); Stream.of("d", "e", "f").forEachOrdered(other::add); sj.merge(other); ! assertEquals(sj.toString(), "{d:e:f}"); ! sj = new StringJoiner(",", "{", "}").setEmptyValue("EMPTY"); assertEquals(sj.toString(), "EMPTY"); sj.merge(other); ! assertEquals(sj.toString(), "{d:e:f}"); } public void testEmptyBoth() { ! StringJoiner sj = new StringJoiner(",", "{", "}"); ! StringJoiner other = new StringJoiner(":", "[", "]"); sj.merge(other); ! assertEquals(sj.toString(), "{}"); other.setEmptyValue("NOTHING"); sj.merge(other); ! assertEquals(sj.toString(), "{}"); ! sj = new StringJoiner(",", "{", "}").setEmptyValue("EMPTY"); assertEquals(sj.toString(), "EMPTY"); sj.merge(other); assertEquals(sj.toString(), "EMPTY"); } public void testCascadeEmpty() { ! StringJoiner sj = new StringJoiner(",", "{", "}"); ! StringJoiner o1 = new StringJoiner(":", "[", "]").setEmptyValue("Empty1"); StringJoiner o2 = new StringJoiner(",", "<", ">").setEmptyValue("Empty2"); o1.merge(o2); assertEquals(o1.toString(), "Empty1"); sj.merge(o1); ! assertEquals(sj.toString(), "{}"); } public void testDelimiter() { ! StringJoiner sj = new StringJoiner(",", "{", "}"); ! StringJoiner other = new StringJoiner(":", "[", "]"); Stream.of("a", "b", "c").forEachOrdered(sj::add); Stream.of("d", "e", "f").forEachOrdered(other::add); sj.merge(other); ! assertEquals(sj.toString(), "{a,b,c,d:e:f}"); } public void testMergeSelf() { ! final StringJoiner sj = new StringJoiner(",", "[", "]").add("a").add("b"); ! assertEquals(sj.merge(sj).toString(), "[a,b,a,b]"); ! assertEquals(sj.merge(sj).toString(), "[a,b,a,b,a,b,a,b]"); ! ! final StringJoiner sj2 = new StringJoiner(",").add("c").add("d"); ! assertEquals(sj2.merge(sj2).toString(), "c,d,c,d"); } } --- 34,170 ---- import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; @Test public class MergeTest { + private final static String[] PREFIXES = {"", "{", "@#$%"}; + private final static String[] SUFFIXES = {"", "}", "*&%$"}; + + private static class Fixes { + public String pre0, suf0; + public String pre1, suf1; + public Fixes(String prefix0, String suffix0, + String prefix1, String suffix1) { + this.pre0 = prefix0; + this.suf0 = suffix0; + this.pre1 = prefix1; + this.suf1 = suffix1; + } + } + + private static Stream<Fixes> fixesStream() { + Stream.Builder<Fixes> builder = Stream.builder(); + for (final String prefix0 : PREFIXES) { + for (final String suffix0 : SUFFIXES) { + for (final String prefix1 : PREFIXES) { + for (final String suffix1 : SUFFIXES) { + builder.accept(new Fixes(prefix0, suffix0, + prefix1, suffix1)); + } + } + } + } + return builder.build(); + } + + @Test(expectedExceptions = {NullPointerException.class}) public void testNull() { StringJoiner sj = new StringJoiner(",", "{", "}"); sj.merge(null); } public void testSimple() { ! fixesStream().forEach(fixes -> { ! StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0); ! StringJoiner other = new StringJoiner(",", fixes.pre1, fixes.suf1); Stream.of("a", "b", "c").forEachOrdered(sj::add); Stream.of("d", "e", "f").forEachOrdered(other::add); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + "a,b,c,d,e,f" + fixes.suf0); ! }); } public void testEmptyOther() { ! fixesStream().forEach(fixes -> { ! StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0); ! StringJoiner other = new StringJoiner(",", fixes.pre1, fixes.suf1); Stream.of("a", "b", "c").forEachOrdered(sj::add); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + "a,b,c" + fixes.suf0); other.setEmptyValue("EMPTY"); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + "a,b,c" + fixes.suf0); ! }); } public void testEmptyThis() { ! fixesStream().forEach(fixes -> { ! StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0); ! StringJoiner other = new StringJoiner(":", fixes.pre1, fixes.suf1); Stream.of("d", "e", "f").forEachOrdered(other::add); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + "d:e:f" + fixes.suf0); ! sj = new StringJoiner(",", fixes.pre0, fixes.suf0).setEmptyValue("EMPTY"); assertEquals(sj.toString(), "EMPTY"); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + "d:e:f" + fixes.suf0); ! }); } public void testEmptyBoth() { ! fixesStream().forEach(fixes -> { ! StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0); ! StringJoiner other = new StringJoiner(":", fixes.pre1, fixes.suf1); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + fixes.suf0); other.setEmptyValue("NOTHING"); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + fixes.suf0); ! sj = new StringJoiner(",", fixes.pre0, fixes.suf0).setEmptyValue("EMPTY"); assertEquals(sj.toString(), "EMPTY"); sj.merge(other); assertEquals(sj.toString(), "EMPTY"); + }); } public void testCascadeEmpty() { ! fixesStream().forEach(fixes -> { ! StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0); ! StringJoiner o1 = new StringJoiner(":", fixes.pre1, fixes.suf1).setEmptyValue("Empty1"); StringJoiner o2 = new StringJoiner(",", "<", ">").setEmptyValue("Empty2"); o1.merge(o2); assertEquals(o1.toString(), "Empty1"); sj.merge(o1); ! assertEquals(sj.toString(), fixes.pre0 + fixes.suf0); ! }); } public void testDelimiter() { ! fixesStream().forEach(fixes -> { ! StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0); ! StringJoiner other = new StringJoiner(":", fixes.pre1, fixes.suf1); Stream.of("a", "b", "c").forEachOrdered(sj::add); Stream.of("d", "e", "f").forEachOrdered(other::add); sj.merge(other); ! assertEquals(sj.toString(), fixes.pre0 + "a,b,c,d:e:f" + fixes.suf0); ! }); } public void testMergeSelf() { ! fixesStream().forEach(fixes -> { ! final StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0).add("a").add("b"); ! assertEquals(sj.merge(sj).toString(), fixes.pre0 + "a,b,a,b" + fixes.suf0); ! assertEquals(sj.merge(sj).toString(), fixes.pre0 + "a,b,a,b,a,b,a,b" + fixes.suf0); ! }); } }