@@ -0,0 +1,2880 @@
+package org.realityforge.replicant.client;%0A%0Aimport org.testng.annotations.Test;%0Aimport static org.testng.Assert.*;%0A%0Apublic class ListenerEntryTest%0A%7B%0A  @Test%0A  public void basicConstruction()%0A  %7B%0A    final RecordingListener listener = new RecordingListener();%0A    final ListenerEntry entry = new ListenerEntry( listener );%0A    assertEquals( entry.getListener(), listener );%0A  %7D%0A%0A  @Test%0A  public void isEmpty()%0A  %7B%0A    final Object instance = new Object();%0A    final RecordingListener listener = new RecordingListener();%0A    final ListenerEntry entry = new ListenerEntry( listener );%0A%0A    assertTrue( entry.isEmpty() );%0A    entry.setGlobalListener( true );%0A    assertFalse( entry.isEmpty() );%0A    entry.setGlobalListener( false );%0A    assertTrue( entry.isEmpty() );%0A    entry.interestedTypeSet().add( String.class );%0A    assertFalse( entry.isEmpty() );%0A    entry.interestedTypeSet().remove( String.class );%0A    assertTrue( entry.isEmpty() );%0A    entry.interestedInstanceSet().add( instance );%0A    assertFalse( entry.isEmpty() );%0A    entry.interestedInstanceSet().remove( instance );%0A    assertTrue( entry.isEmpty() );%0A    assertEquals( entry.getListener(), listener );%0A  %7D%0A%0A  @Test%0A  public void tryClone()%0A  %7B%0A    final Object instance = new Object();%0A    final RecordingListener listener = new RecordingListener();%0A    final ListenerEntry entry = new ListenerEntry( listener );%0A    entry.setGlobalListener( true );%0A    entry.interestedTypeSet().add( String.class );%0A    entry.interestedInstanceSet().add( instance );%0A%0A    final ListenerEntry clone = entry.clone();%0A%0A    assertNotSame( clone, entry );%0A    assertEquals( clone.getListener(), listener );%0A    assertEquals( clone.isGlobalListener(), entry.isGlobalListener() );%0A    assertEquals( clone.interestedInstanceSet(), entry.interestedInstanceSet() );%0A  %7D%0A%0A  @Test( expectedExceptions = UnsupportedOperationException.class )%0A  public void getInterestedTypeSet_raises_UnsupportedOperationException_on_modification()%0A  %7B%0A    final RecordingListener listener = new RecordingListener();%0A    final ListenerEntry entry = new ListenerEntry( listener );%0A    entry.interestedTypeSet().add( String.class );%0A%0A    assertTrue( entry.getInterestedTypeSet().contains( String.class ) );%0A%0A    // Should raise an exception%0A    entry.getInterestedTypeSet().remove( String.class );%0A  %7D%0A%0A%0A  @Test( expectedExceptions = UnsupportedOperationException.class )%0A  public void getInterestedInstanceSet_raises_UnsupportedOperationException_on_modification()%0A  %7B%0A    final RecordingListener listener = new RecordingListener();%0A    final ListenerEntry entry = new ListenerEntry( listener );%0A    final Object instance = new Object();%0A    entry.interestedInstanceSet().add( instance );%0A%0A    assertTrue( entry.getInterestedInstanceSet().contains( instance ) );%0A%0A    // Should raise an exception%0A    entry.getInterestedInstanceSet().remove( instance );%0A  %7D%0A%7D%0A

Add test for listeners entry test