package com.shazam.shazamcrest; import static com.google.common.collect.Sets.newHashSet; import static com.shazam.shazamcrest.MatcherAssert.assertThat; import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; import static com.shazam.shazamcrest.model.Bean.Builder.bean; import static java.util.Arrays.asList; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import com.shazam.shazamcrest.model.Bean; /** * Tests which verifies sets comparison is not affected by the order of the elements. */ @RunWith(Parameterized.class) public class MatcherAssertSetsTest { @Parameterized.Parameters public static List<Object[]> data() { return asList(new Object[20][0]); } public MatcherAssertSetsTest() {} @Test public void ignoresOrderingInSet() { Bean expected = bean().set(newHashSet( bean().string("a").build(), bean().string("b").build())) .build(); Bean actual = bean().set(newHashSet( bean().string("a").build(), bean().string("b").build())) .build(); assertThat(actual, sameBeanAs(expected)); } @Test public void ignoresOrderingInNestedSet() { Bean expected = bean().set(newHashSet( bean().set(newHashSet( bean().string("a").build(), bean().string("b").build())).build(), bean().set(newHashSet( bean().string("a").build(), bean().string("b").build())).build())) .build(); Bean actual = bean().set(newHashSet( bean().set(newHashSet( bean().string("a").build(), bean().string("b").build())).build(), bean().set(newHashSet( bean().string("a").build(), bean().string("b").build())).build())) .build(); assertThat(actual, sameBeanAs(expected)); } @Test public void ignoresOrderingForSetsImplementations() { Bean expected = bean().hashSet(newHashSet( bean().string("a").build(), bean().string("b").build())) .build(); Bean actual = bean().hashSet(newHashSet( bean().string("a").build(), bean().string("b").build())) .build(); assertThat(actual, sameBeanAs(expected)); } }