@Test public void serialize_IntactSheet() throws Exception { ElementStyleSheet sheet = new ElementStyleSheet(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream os = new ObjectOutputStream( bos ); os.writeObject( sheet ); ObjectInputStream is = new ObjectInputStream( new ByteArrayInputStream( bos.toByteArray() ) ); ElementStyleSheet clone = (ElementStyleSheet) is.readObject(); assertNotSame( "IDs are generated each time", sheet.getId(), clone.getId() ); }
@Test public void serialize_Changed() throws Exception { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream os = new ObjectOutputStream( bos ); os.writeObject( sheet ); ObjectInputStream is = new ObjectInputStream( new ByteArrayInputStream( bos.toByteArray() ) ); ElementStyleSheet clone = (ElementStyleSheet) is.readObject(); assertEverySecondKey( clone, keys ); }
@Test( expected = NullPointerException.class ) public void setStyleProperty_RejectsNullKeys() { ElementStyleSheet sheet = new ElementStyleSheet(); sheet.setStyleProperty( null, "" ); }
@Test public void addAll() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet another = new ElementStyleSheet(); another.addAll( sheet ); assertEverySecondKey( another, keys ); for ( int i = 0; i < keys.size(); i += 2 ) { StyleKey key = keys.get( i ); assertTrue( "addAll() adds properties as local", another.isLocalKey( key ) ); } }
@Test public void getStyleProperty_OnIntactSheet() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); final Float val = 123f; Object property = sheet.getStyleProperty( keys.get( 0 ), val ); assertEquals( "When nothing has been changed, default value should be returned", val, property ); }
@Test public void isLocalKey_OnIntactSheet() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); StyleKey key = keys.get( 0 ); ElementStyleSheet sheet = new ElementStyleSheet(); assertFalse( "Non-changed sheet has no 'local' keys", sheet.isLocalKey( key ) ); }
@Test public void toArray_OnIntactSheet() { ElementStyleSheet sheet = new ElementStyleSheet(); Object[] objects = sheet.toArray(); for ( Object object : objects ) { assertNull( object ); } }
@Test public void getDefinedPropertyNamesArray_OnIntactSheet() { ElementStyleSheet sheet = new ElementStyleSheet(); assertEquals( "Non-changed sheet should return empty array of defined properties", 0, sheet.getDefinedPropertyNamesArray().length ); }
@Test public void setAndGetProperties() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); assertEverySecondKey( sheet, keys ); }
@Test public void isLocalKey_ReturnsFalse_OnUnknownIdentifier() throws Exception { List<StyleKey> before = StyleKey.getDefinedStyleKeysList(); StyleKey key = before.get( 0 ); ElementStyleSheet sheet = new ElementStyleSheet(); sheet.setStyleProperty( key, valueFor( key ) ); final String keyName = "testKey_isLocalKey_ReturnsFalse_OnUnknownIdentifier"; //noinspection deprecation StyleKey syntheticKey = StyleKey.addTestKey( keyName, String.class, false, false ); testKeys.add( syntheticKey ); List<StyleKey> after = StyleKey.getDefinedStyleKeysList(); assertEquals( "The test syntheticKey should have been added", before.size() + 1, after.size() ); assertFalse( "Unknown keys are ignored", sheet.isLocalKey( syntheticKey ) ); }
@Test public void copyFrom_OnIntactSheet_SameAsClearing() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); sheet.copyFrom( new ElementStyleSheet() ); assertEquals( 0, sheet.getModificationCount() ); assertEquals( 0, sheet.getChangeTrackerHash() ); for ( int i = 0; i < keys.size(); i += 2 ) { StyleKey key = keys.get( i ); Object property = sheet.getStyleProperty( key ); assertNull( property ); } }
@Test public void isLocalKey_KeyIsTreatedAsLocal_AfterBeingSetExplicitly() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); StyleKey key1 = keys.get( 0 ); StyleKey key2 = keys.get( 1 ); ElementStyleSheet sheet = new ElementStyleSheet(); sheet.setStyleProperty( key1, valueFor( key1 ) ); assertTrue( "First key was set, should be 'local'", sheet.isLocalKey( key1 ) ); assertFalse( "Second key was not set, should not be 'local'", sheet.isLocalKey( key2 ) ); }
@Test public void getStyleProperty_ReturnsSetValue() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); StyleKey key = keys.get( 0 ); ElementStyleSheet sheet = new ElementStyleSheet(); sheet.setStyleProperty( key, valueFor( key ) ); Object property = sheet.getStyleProperty( key, 2f ); assertEquals( valueFor( key ), property ); }
@Test public void toArray_ReturnsSetValue() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); StyleKey key = keys.get( 0 ); ElementStyleSheet sheet = new ElementStyleSheet(); sheet.setStyleProperty( key, valueFor( key ) ); Object[] objects = sheet.toArray(); assertEquals( valueFor( key ), objects[ 0 ] ); }
@Test public void clonesCorrectly() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet clone = sheet.clone(); assertEverySecondKey( clone, keys ); }
@Test public void copyFrom_OnChangedSheet() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet another = new ElementStyleSheet(); another.copyFrom( sheet ); assertEquals( sheet.getModificationCount(), another.getModificationCount() ); assertEquals( sheet.getChangeTrackerHash(), another.getChangeTrackerHash() ); assertEverySecondKey( another, keys ); for ( int i = 0; i < keys.size(); i += 2 ) { StyleKey key = keys.get( i ); assertTrue( another.isLocalKey( key ) ); } }
@Test public void clearsCorrectly() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); sheet.clear(); assertEquals( 0, sheet.getModificationCount() ); assertEquals( 0, sheet.getChangeTrackerHash() ); for ( int i = 0; i < keys.size(); i += 2 ) { StyleKey key = keys.get( i ); Object property = sheet.getStyleProperty( key ); assertNull( property ); } }
@Test public void setStyleProperty_NullValuesAreTreatedAsAbsent() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); StyleKey key = keys.get( 0 ); ElementStyleSheet sheet = new ElementStyleSheet(); sheet.setStyleProperty( key, valueFor( key ) ); sheet.setStyleProperty( key, null ); assertEquals( valueFor( key ), sheet.getStyleProperty( key, valueFor( key ) ) ); assertFalse( sheet.isLocalKey( key ) ); }
@Test public void derive_PreservingId() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet clone = sheet.derive( true ); assertEquals( sheet.getId(), clone.getId() ); assertEverySecondKey( clone, keys ); }
@Test public void derive_DiscardingId() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet clone = sheet.derive( false ); assertNotSame( sheet.getId(), clone.getId() ); assertEverySecondKey( clone, keys ); }