package de.axone.cache.ng; import static de.axone.cache.ng.CacheNGAssert.*; import static de.axone.cache.ng.CacheNGTest_Implementations.*; import static org.assertj.core.api.Assertions.*; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import org.testng.annotations.Test; import de.axone.cache.ng.CacheNGTestHelpers.RN; import de.axone.cache.ng.CacheNGTestHelpers.TArticle; import de.axone.cache.ng.CacheNGTestHelpers.Tid; @Test( groups="cacheng.basic" ) public class CacheNGTest_ArticleListForTid { static class TestAccessor_ArticleForTid implements CacheNG.SingleValueAccessor<Tid, List<TArticle>> { private final TestMapTidToArticle data; public TestAccessor_ArticleForTid( TestMapTidToArticle data ) { this.data = data; } @Override public List<TArticle> fetch( Tid tid ) { return data.get( tid ); } void addArticle( TArticle art ){ data.addArticle( art ); } } static class TestMapTidToArticle extends HashMap<Tid, List<TArticle>>{ void addArticle( TArticle art ){ for( Tid tid : art.getTreeIdentifiers() ){ List<TArticle> arts = get( tid ); if( arts == null ){ arts = new LinkedList<>(); put( tid, arts ); } arts.add( art ); } } } public void cacheArticlesForTids(){ TestMapTidToArticle data = new TestMapTidToArticle(); data.addArticle( TArticle.build( A12345 ) ); data.addArticle( TArticle.build( A12346 ) ); TestAccessor_ArticleForTid accessor = new TestAccessor_ArticleForTid( data ); CacheNG.AutomaticClient<Tid, List<TArticle>> auto = new AutomaticClientImpl<>( new CacheHashMap<>( RN.TID_LARTICLE ) ); assertThat( auto ).hasNotCached( T123 ); List<TArticle> arts = auto.fetch( T123, accessor ); assertThat( auto ).hasCached( T123 ); assertThat( arts ).are( havingTid( T123 ) ); // On import of articles: diff oldtids/newtids auto.invalidate( T123 ); assertThat( auto ).hasNotCached( T123 ); } }