From beeecf8196dd7d52856159b27e02677585c6a269 Mon Sep 17 00:00:00 2001 From: Dan Polivy Date: Fri, 15 Feb 2013 10:21:49 -0800 Subject: [PATCH] Update tests to support 'sprite-scale' directive Added a few new tests to validate the sprite-scale directive is working as expected. --- .../labs/smartsprites/SpriteBuilderTest.java | 57 ++++++++++++++++++ .../SpriteImageDirectiveTest.java | 16 +++++ .../SpriteReferenceDirectiveTest.java | 12 ++-- .../css/style-expected.css | 11 ++++ test/scaled-sprite-fractional/css/style.css | 10 +++ test/scaled-sprite-fractional/img/web.gif | Bin 0 -> 1072 bytes test/scaled-sprite/css/style-expected.css | 11 ++++ test/scaled-sprite/css/style.css | 10 +++ test/scaled-sprite/img/web.gif | Bin 0 -> 1072 bytes 9 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 test/scaled-sprite-fractional/css/style-expected.css create mode 100644 test/scaled-sprite-fractional/css/style.css create mode 100644 test/scaled-sprite-fractional/img/web.gif create mode 100644 test/scaled-sprite/css/style-expected.css create mode 100644 test/scaled-sprite/css/style.css create mode 100644 test/scaled-sprite/img/web.gif diff --git a/src/test/java/org/carrot2/labs/smartsprites/SpriteBuilderTest.java b/src/test/java/org/carrot2/labs/smartsprites/SpriteBuilderTest.java index 517bdca2..da782832 100644 --- a/src/test/java/org/carrot2/labs/smartsprites/SpriteBuilderTest.java +++ b/src/test/java/org/carrot2/labs/smartsprites/SpriteBuilderTest.java @@ -285,6 +285,63 @@ public void testNonDefaultOutputDir() throws FileNotFoundException, IOException org.carrot2.util.FileUtils.deleteThrowingExceptions(absoluteSpriteFile); } + @Test + public void testScaledSpriteImage() throws FileNotFoundException, IOException + { + final File testDir = testDir("scaled-sprite"); + final File documentRootDir = testDir("scaled-sprite"); + buildSprites(filesystemSmartSpritesParameters(testDir, null, + documentRootDir, MessageLevel.INFO, + SmartSpritesParameters.DEFAULT_CSS_FILE_SUFFIX, + SmartSpritesParameters.DEFAULT_SPRITE_PNG_DEPTH, + SmartSpritesParameters.DEFAULT_SPRITE_PNG_IE6, + SmartSpritesParameters.DEFAULT_CSS_FILE_ENCODING)); + + assertThat(processedCss()).hasSameContentAs(expectedCss()); + + final File absoluteSpriteFile = new File(documentRootDir, "img/absolute.png"); + assertThat(absoluteSpriteFile).exists(); + org.fest.assertions.Assertions.assertThat(ImageIO.read(absoluteSpriteFile)) + .hasSize(new Dimension(17, 17)); + + assertThat(messages).doesNotHaveMessagesOfLevel(MessageLevel.WARN); + + org.carrot2.util.FileUtils.deleteThrowingExceptions(absoluteSpriteFile); + } + + @Test + public void testFractionalScaledSpriteImage() throws FileNotFoundException, IOException + { + final File testDir = testDir("scaled-sprite-fractional"); + final File documentRootDir = testDir("scaled-sprite-fractional"); + buildSprites(filesystemSmartSpritesParameters(testDir, null, + documentRootDir, MessageLevel.INFO, + SmartSpritesParameters.DEFAULT_CSS_FILE_SUFFIX, + SmartSpritesParameters.DEFAULT_SPRITE_PNG_DEPTH, + SmartSpritesParameters.DEFAULT_SPRITE_PNG_IE6, + SmartSpritesParameters.DEFAULT_CSS_FILE_ENCODING)); + + assertThat(processedCss()).hasSameContentAs(expectedCss()); + + final File absoluteSpriteFile = new File(documentRootDir, "img/absolute.png"); + assertThat(absoluteSpriteFile).exists(); + org.fest.assertions.Assertions.assertThat(ImageIO.read(absoluteSpriteFile)) + .hasSize(new Dimension(17, 17)); + +// assertThat(messages).doesNotHaveMessagesOfLevel(MessageLevel.WARN); + + assertThat(messages).isEquivalentTo( + Message.MessageLevel.WARN, + new Message(Message.MessageLevel.WARN, + Message.MessageType.IMAGE_FRACTIONAL_SCALE_VALUE, null, 8, "../img/web.gif", + 8.5f, 8.5f), + new Message(Message.MessageLevel.WARN, + Message.MessageType.FRACTIONAL_SCALE_VALUE, null, 8, "absolute", + 8.5f, 8.5f)); + + org.carrot2.util.FileUtils.deleteThrowingExceptions(absoluteSpriteFile); + } + @Test public void testCssOutputDir() throws FileNotFoundException, IOException { diff --git a/src/test/java/org/carrot2/labs/smartsprites/SpriteImageDirectiveTest.java b/src/test/java/org/carrot2/labs/smartsprites/SpriteImageDirectiveTest.java index 37052952..8bd7efe5 100644 --- a/src/test/java/org/carrot2/labs/smartsprites/SpriteImageDirectiveTest.java +++ b/src/test/java/org/carrot2/labs/smartsprites/SpriteImageDirectiveTest.java @@ -368,6 +368,22 @@ public void testNegativeMarginValues() assertEquals(0, directive.spriteLayoutProperties.marginBottom); } + @Test + public void testSpriteScalingProperty() + { + final SpriteImageDirective directive = SpriteImageDirective + .parse( + "sprite: sprite; sprite-image: url('../sprite.png'); sprite-layout: horizontal; " + + "sprite-scale: 2;", + messageLog); + + assertThat(messages).doesNotHaveMessagesOfLevel(MessageLevel.WARN); + assertNotNull(directive); + assertEquals(directive.spriteId, "sprite"); + assertEquals(directive.imagePath, "../sprite.png"); + assertEquals(directive.scaleRatio, 2f); + } + private void checkUidType(String uidDeclaration, SpriteUidType expectedUidType) { final SpriteImageDirective directive = SpriteImageDirective.parse( diff --git a/src/test/java/org/carrot2/labs/smartsprites/SpriteReferenceDirectiveTest.java b/src/test/java/org/carrot2/labs/smartsprites/SpriteReferenceDirectiveTest.java index ee088224..f370c55a 100644 --- a/src/test/java/org/carrot2/labs/smartsprites/SpriteReferenceDirectiveTest.java +++ b/src/test/java/org/carrot2/labs/smartsprites/SpriteReferenceDirectiveTest.java @@ -27,15 +27,15 @@ public class SpriteReferenceDirectiveTest extends TestWithMemoryMessageSink { private static final SpriteImageDirective VERTICAL_SPRITE_IMAGE_DIRECTIVE = new SpriteImageDirective( "vsprite", "sprite.png", SpriteImageLayout.VERTICAL, SpriteImageFormat.PNG, - Ie6Mode.AUTO, Color.WHITE, SpriteUidType.NONE); + Ie6Mode.AUTO, Color.WHITE, SpriteUidType.NONE, 1); private static final SpriteImageDirective HORIZONTAL_SPRITE_IMAGE_DIRECTIVE = new SpriteImageDirective( "hsprite", "hsprite.png", SpriteImageLayout.HORIZONTAL, SpriteImageFormat.PNG, - Ie6Mode.AUTO, Color.WHITE, SpriteUidType.NONE); + Ie6Mode.AUTO, Color.WHITE, SpriteUidType.NONE, 1); private static final SpriteImageDirective VERTICAL_SPRITE_IMAGE_DIRECTIVE_WITH_LAYOUT = new SpriteImageDirective( "vsprite", "sprite.png", SpriteImageLayout.VERTICAL, SpriteImageFormat.PNG, - Ie6Mode.AUTO, Color.WHITE, SpriteUidType.NONE, new SpriteLayoutProperties( + Ie6Mode.AUTO, Color.WHITE, SpriteUidType.NONE, 1, new SpriteLayoutProperties( SpriteAlignment.REPEAT, 1, 2, 3, 4)); private static final Map SPRITE_IMAGE_DIRECTIVES = ImmutableMap @@ -288,7 +288,7 @@ public void testOverriddenSpriteLayoutFromSpriteImageDirective() assertThat(messages).isEmpty(); } - + @Test public void testNegativeMarginValues() { @@ -296,7 +296,7 @@ public void testNegativeMarginValues() .parse( "sprite-ref: vlsprite; sprite-alignment: right; sprite-margin-left: -10px; sprite-margin-right: 20; sprite-margin-top: 30px; sprite-margin-bottom: -40;", SPRITE_IMAGE_DIRECTIVES, messageLog); - + assertNotNull(directive); assertEquals("vlsprite", directive.spriteRef); assertEquals(SpriteAlignment.RIGHT, directive.spriteLayoutProperties.alignment); @@ -304,7 +304,7 @@ public void testNegativeMarginValues() assertEquals(20, directive.spriteLayoutProperties.marginRight); assertEquals(30, directive.spriteLayoutProperties.marginTop); assertEquals(0, directive.spriteLayoutProperties.marginBottom); - + assertThat(messages).contains( new Message(Message.MessageLevel.WARN, Message.MessageType.IGNORING_NEGATIVE_MARGIN_VALUE, null, 0, diff --git a/test/scaled-sprite-fractional/css/style-expected.css b/test/scaled-sprite-fractional/css/style-expected.css new file mode 100644 index 00000000..3490c694 --- /dev/null +++ b/test/scaled-sprite-fractional/css/style-expected.css @@ -0,0 +1,11 @@ +/** + * A test of writing a scaled image sprite for highdpi displays. + */ + +div.web { + width: 17px; + height: 17px; + background-image: url('/img/absolute.png'); + background-position: -0px top; + background-size: 9px 9px; +} diff --git a/test/scaled-sprite-fractional/css/style.css b/test/scaled-sprite-fractional/css/style.css new file mode 100644 index 00000000..139b0ecd --- /dev/null +++ b/test/scaled-sprite-fractional/css/style.css @@ -0,0 +1,10 @@ +/** + * A test of writing a scaled image sprite for highdpi displays. + */ + +/** sprite: absolute; sprite-image: url('/img/absolute.png'); sprite-layout: horizontal; sprite-scale: 2; */ +div.web { + width: 17px; + height: 17px; + background-image: url(../img/web.gif); /** sprite-ref: absolute */ +} diff --git a/test/scaled-sprite-fractional/img/web.gif b/test/scaled-sprite-fractional/img/web.gif new file mode 100644 index 0000000000000000000000000000000000000000..d87232bd4ef0479a7b454e5917037a5ea1bff452 GIT binary patch literal 1072 zcmdth|5K9%9Ki7hFb}EYV)=vJp@G(EyV+@do;d^WpgS2ekH)dNFW}ga1-p`Fo*j$9 zF=9j5n6d2`+9uzYq6~!xkTD+Eo`(r2&Vz+^Er{)r)S{zxkYy^1{*B)E`WN18P8RE+ zED1?M9=Q>ee+JFd0I!-^ml?Gshje3oP{cm4GB zT#vKiteaZw1H(vot}oB%rkofa!XS)+4>R-*xJ{!A*nkVix=mx$%;3p~Ll7JhEsvnf zINN z%M&7On(CT;@Xu}d{dWHIJMiod>yK%1V2XI*hn{p;UUJvH42MgDKlt$+Zz0?XpMQ(=woS>dgQGbVi3WgSgRA~Om+He0esZTe>Bp^|Q zfo$~O6G;3z65W#AqNlYU9^On(-b3ehWxXNhvQ8=5y@$Gs6bV??(WdwlA%Cv2&$(*rYRldo-5s-R3CG+bg!ssBevvAH4ZqRH=xB71IpS zRYa9k{Ogwbm|e=fu^Q5Ueoy7f{Of^V=5}YwoZHC$)I^4$ws}q!x4C}DJ7On9%-Khr z!k(PjE4i0mK9_J{V6D75-WtO;bL|%bwH#V1vp|}OgztN3iHMee+JFd0I!-^ml?Gshje3oP{cm4GB zT#vKiteaZw1H(vot}oB%rkofa!XS)+4>R-*xJ{!A*nkVix=mx$%;3p~Ll7JhEsvnf zINN z%M&7On(CT;@Xu}d{dWHIJMiod>yK%1V2XI*hn{p;UUJvH42MgDKlt$+Zz0?XpMQ(=woS>dgQGbVi3WgSgRA~Om+He0esZTe>Bp^|Q zfo$~O6G;3z65W#AqNlYU9^On(-b3ehWxXNhvQ8=5y@$Gs6bV??(WdwlA%Cv2&$(*rYRldo-5s-R3CG+bg!ssBevvAH4ZqRH=xB71IpS zRYa9k{Ogwbm|e=fu^Q5Ueoy7f{Of^V=5}YwoZHC$)I^4$ws}q!x4C}DJ7On9%-Khr z!k(PjE4i0mK9_J{V6D75-WtO;bL|%bwH#V1vp|}OgztN3iHM