724 } 725 }, 726 NULL { 727 public String apply(String oldValue, String newValue) { 728 return null; 729 } 730 }, 731 RESULT { 732 public String apply(String oldValue, String newValue) { 733 return VALUES[3]; 734 } 735 }, 736 } 737 } 738 739 @DataProvider(name = "MergeCases", parallel = true) 740 public Iterator<Object[]> mergeCasesProvider() { 741 Collection<Object[]> cases = new ArrayList<>(); 742 743 cases.addAll(makeMergeTestCases()); 744 cases.addAll(makeMergeNullValueTestCases()); 745 746 return cases.iterator(); 747 } 748 749 static Collection<Object[]> makeMergeTestCases() { 750 Collection<Object[]> cases = new ArrayList<>(); 751 752 for( Object[] mapParams : makeAllRWMaps() ) { 753 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.ABSENT, Merging.Value.NEWVALUE, Merging.Merger.UNUSED, Merging.Value.NEWVALUE, Merging.Value.NEWVALUE }); 754 } 755 756 for( Object[] mapParams : makeAllRWMaps() ) { 757 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.OLDVALUE, Merging.Value.NEWVALUE, Merging.Merger.NULL, Merging.Value.ABSENT, Merging.Value.NULL }); 758 } 759 760 for( Object[] mapParams : makeAllRWMaps() ) { 761 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.OLDVALUE, Merging.Value.NEWVALUE, Merging.Merger.RESULT, Merging.Value.RESULT, Merging.Value.RESULT }); 762 } 763 764 return cases; 765 } 766 767 static Collection<Object[]> makeMergeNullValueTestCases() { 768 Collection<Object[]> cases = new ArrayList<>(); 769 770 for( Object[] mapParams : makeAllRWMapsWithNulls() ) { 771 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.OLDVALUE, Merging.Value.NULL, Merging.Merger.NULL, Merging.Value.ABSENT, Merging.Value.NULL }); 772 } 773 774 for( Object[] mapParams : makeAllRWMapsWithNulls() ) { 775 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.OLDVALUE, Merging.Value.NULL, Merging.Merger.RESULT, Merging.Value.RESULT, Merging.Value.RESULT }); 776 } 777 778 for( Object[] mapParams : makeAllRWMapsWithNulls() ) { 779 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.ABSENT, Merging.Value.NULL, Merging.Merger.UNUSED, Merging.Value.ABSENT, Merging.Value.NULL }); 780 } 781 782 for( Object[] mapParams : makeAllRWMapsWithNulls() ) { 783 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.NULL, Merging.Value.NULL, Merging.Merger.UNUSED, Merging.Value.ABSENT, Merging.Value.NULL }); 784 } 785 786 for( Object[] mapParams : makeAllRWMapsWithNulls() ) { 787 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.NULL, Merging.Value.NEWVALUE, Merging.Merger.UNUSED, Merging.Value.NEWVALUE, Merging.Value.NEWVALUE }); 788 } 789 790 return cases; 791 } 792 793 public interface Thrower<T extends Throwable> { 794 795 public void run() throws T; 796 } 797 798 public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) { 799 assertThrows(thrower, throwable, null); 800 } 801 802 public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) { 803 Throwable thrown; 804 try { 805 thrower.run(); 806 thrown = null; 807 } catch (Throwable caught) { | 724 } 725 }, 726 NULL { 727 public String apply(String oldValue, String newValue) { 728 return null; 729 } 730 }, 731 RESULT { 732 public String apply(String oldValue, String newValue) { 733 return VALUES[3]; 734 } 735 }, 736 } 737 } 738 739 @DataProvider(name = "MergeCases", parallel = true) 740 public Iterator<Object[]> mergeCasesProvider() { 741 Collection<Object[]> cases = new ArrayList<>(); 742 743 cases.addAll(makeMergeTestCases()); 744 745 return cases.iterator(); 746 } 747 748 static Collection<Object[]> makeMergeTestCases() { 749 Collection<Object[]> cases = new ArrayList<>(); 750 751 for( Object[] mapParams : makeAllRWMaps() ) { 752 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.ABSENT, Merging.Value.NEWVALUE, Merging.Merger.UNUSED, Merging.Value.NEWVALUE, Merging.Value.NEWVALUE }); 753 } 754 755 for( Object[] mapParams : makeAllRWMaps() ) { 756 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.OLDVALUE, Merging.Value.NEWVALUE, Merging.Merger.NULL, Merging.Value.ABSENT, Merging.Value.NULL }); 757 } 758 759 for( Object[] mapParams : makeAllRWMaps() ) { 760 cases.add(new Object[] { mapParams[0], mapParams[1], Merging.Value.OLDVALUE, Merging.Value.NEWVALUE, Merging.Merger.RESULT, Merging.Value.RESULT, Merging.Value.RESULT }); 761 } 762 763 return cases; 764 } 765 766 public interface Thrower<T extends Throwable> { 767 768 public void run() throws T; 769 } 770 771 public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) { 772 assertThrows(thrower, throwable, null); 773 } 774 775 public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) { 776 Throwable thrown; 777 try { 778 thrower.run(); 779 thrown = null; 780 } catch (Throwable caught) { |