package de.axone.data; import static org.testng.Assert.*; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import org.testng.annotations.Test; import de.axone.data.Update.AbstractListEqualsUpdater; @Test( groups="tools.updated" ) public class UpdaterTest { public void testUpdate() throws Exception { List<TC> src = Arrays.asList( new TC( 1, "A" ), new TC( 2, "B" ), new TC( 3, "C" ) ); List<TC> dst = new LinkedList<>(); dst.add( new TC( 1, "A" ) ); dst.add( new TC( 99, "B" ) ); dst.add( new TC( 4, "D" ) ); Update.collection( new TestUpdater(), dst, src ); //E.rr( "src", src ); //E.rr( "dst", dst ); assertEquals( dst.size(), 3 ); assertEquals( 1, dst.get( 0 ).id ); assertEquals( "A", dst.get( 0 ).value ); assertEquals( 99, dst.get( 1 ).id ); assertEquals( "B", dst.get( 1 ).value ); assertEquals( -1, dst.get( 2 ).id ); assertEquals( "C", dst.get( 2 ).value ); } private static class TC { public TC( int id, String value ) { this.id = id; this.value = value; } int id; String value; @Override public String toString() { return "(" + id + ",'" + value + "')"; } } private class TestUpdater extends AbstractListEqualsUpdater<TC> { @Override public boolean equals( TC dst, TC src ) { boolean res = dst.value.equals( src.value ); //E.rr( "EQ", dst, src, res ); return res; } @Override public void update( TC dst, TC src ) { //E.rr( "UP", dst, src ); dst.value = src.value; } @Override public TC copy( TC src ) { //E.rr( "CP", src ); return new TC( -1, src.value ); } } }