| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test that getting color properties from a CanvasRenderingContext2D returns properly formatted values."); |
| |
| ctx = document.createElement('canvas').getContext('2d'); |
| |
| function trySettingStrokeStyle(value) { |
| ctx.strokeStyle = '#666'; |
| ctx.strokeStyle = value; |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingFillStyle(value) { |
| ctx.fillStyle = '#666'; |
| ctx.fillStyle = value; |
| return ctx.fillStyle; |
| } |
| |
| function trySettingShadowColor(value) { |
| ctx.shadowColor = '#666'; |
| ctx.shadowColor = value; |
| return ctx.shadowColor; |
| } |
| |
| function trySettingColor(value, expected) { |
| shouldBe("trySettingStrokeStyle(" + value + ")", expected); |
| shouldBe("trySettingFillStyle(" + value + ")", expected); |
| shouldBe("trySettingShadowColor(" + value + ")", expected); |
| } |
| |
| function trySettingStrokeColorWithSetter(value) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(value); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingFillColorWithSetter(value) { |
| ctx.fillStyle = '#666'; |
| ctx.setFillColor(value); |
| return ctx.fillStyle; |
| } |
| |
| function trySettingShadowWithSetter(value) { |
| ctx.shadowColor = '#666'; |
| ctx.setShadow(0, 0, 0, value); |
| return ctx.shadowColor; |
| } |
| |
| function trySettingColorWithSetter(value, expected) { |
| shouldBe("trySettingStrokeColorWithSetter(" + value + ")", expected); |
| shouldBe("trySettingFillColorWithSetter(" + value + ")", expected); |
| shouldBe("trySettingShadowWithSetter(" + value + ")", expected); |
| } |
| |
| function trySettingFillColorRGBA(r, g, b, a) { |
| ctx.fillStyle = '#666'; |
| ctx.setFillColor(r, g, b, a); |
| return ctx.fillStyle; |
| } |
| |
| function trySettingStrokeColorRGBA(r, g, b, a) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(r, g, b, a); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingShadowRGBA(r, g, b, a) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(r, g, b, a); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingRGBA(r, g, b, a, expected) { |
| shouldBe("trySettingFillColorRGBA(" + r + ", " + g + ", " + b + ", " + a + ")", expected); |
| shouldBe("trySettingStrokeColorRGBA(" + r + ", " + g + ", " + b + ", " + a + ")", expected); |
| shouldBe("trySettingShadowRGBA(" + r + ", " + g + ", " + b + ", " + a + ")", expected); |
| } |
| |
| function trySettingFillColorCMYKA(c, m, y, k, a) { |
| ctx.fillStyle = '#666'; |
| ctx.setFillColor(c, m, y, k, a); |
| return ctx.fillStyle; |
| } |
| |
| function trySettingStrokeColorCMYKA(c, m, y, k, a) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(c, m, y, k, a); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingShadowCMYKA(c, m, y, k, a) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(c, m, y, k, a); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingCMYKA(c, m, y, k, a, expected) { |
| shouldBe("trySettingFillColorCMYKA(" + c + ", " + m + ", " + y + ", " + k + ", " + a + ")", expected); |
| shouldBe("trySettingStrokeColorCMYKA(" + c + ", " + m + ", " + y + ", " + k + ", " + a + ")", expected); |
| shouldBe("trySettingShadowCMYKA(" + c + ", " + m + ", " + y + ", " + k + ", " + a + ")", expected); |
| } |
| |
| function trySettingFillColorWithOverrideAlpha(color, alpha) { |
| ctx.fillStyle = '#666'; |
| ctx.setFillColor(color, alpha); |
| return ctx.fillStyle; |
| } |
| |
| function trySettingStrokeColorWithOverrideAlpha(color, alpha) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(color, alpha); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingShadowWithOverrideAlpha(color, alpha) { |
| ctx.shadowColor = '#666'; |
| ctx.setShadow(0, 0, 0, color, alpha); |
| return ctx.shadowColor; |
| } |
| |
| function trySettingColorWithOverrideAlpha(color, alpha, expected) { |
| shouldBe("trySettingFillColorWithOverrideAlpha(" + color + ", " + alpha + ")", expected); |
| shouldBe("trySettingStrokeColorWithOverrideAlpha(" + color + ", " + alpha + ")", expected); |
| shouldBe("trySettingShadowWithOverrideAlpha(" + color + ", " + alpha + ")", expected); |
| } |
| |
| function trySettingFillColorGrayLevel(grayLevel) { |
| ctx.fillStyle = '#666'; |
| ctx.setFillColor(grayLevel); |
| return ctx.fillStyle; |
| } |
| |
| function trySettingStrokeColorGrayLevel(grayLevel) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(grayLevel); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingShadowGrayLevel(grayLevel) { |
| ctx.shadowColor = '#666'; |
| ctx.setShadow(0, 0, 0, grayLevel); |
| return ctx.shadowColor; |
| } |
| |
| function trySettingGrayLevel(grayLevel, expected) { |
| shouldBe("trySettingFillColorGrayLevel(" + grayLevel + ")", expected); |
| shouldBe("trySettingStrokeColorGrayLevel(" + grayLevel + ")", expected); |
| shouldBe("trySettingShadowGrayLevel(" + grayLevel + ")", expected); |
| } |
| |
| function trySettingFillColorGrayLevelWithAlpha(grayLevel, alpha) { |
| ctx.fillStyle = '#666'; |
| ctx.setFillColor(grayLevel, alpha); |
| return ctx.fillStyle; |
| } |
| |
| function trySettingStrokeColorGrayLevelWithAlpha(grayLevel, alpha) { |
| ctx.strokeStyle = '#666'; |
| ctx.setStrokeColor(grayLevel, alpha); |
| return ctx.strokeStyle; |
| } |
| |
| function trySettingShadowGrayLevelWithAlpha(grayLevel, alpha) { |
| ctx.shadowColor = '#666'; |
| ctx.setShadow(0, 0, 0, grayLevel, alpha); |
| return ctx.shadowColor; |
| } |
| |
| function trySettingGrayLevelWithAlpha(grayLevel, alpha, expected) { |
| shouldBe("trySettingFillColorGrayLevelWithAlpha(" + grayLevel + ", " + alpha + ")", expected); |
| shouldBe("trySettingStrokeColorGrayLevelWithAlpha(" + grayLevel + ", " + alpha + ")", expected); |
| shouldBe("trySettingShadowGrayLevelWithAlpha(" + grayLevel + ", " + alpha + ")", expected); |
| } |
| |
| function tryClearShadowAfterSettingColor(value) { |
| ctx.shadowColor = value; |
| ctx.clearShadow(); |
| return ctx.shadowColor; |
| } |
| |
| function checkDefaultValue(value) { |
| return value; |
| } |
| |
| shouldBe("checkDefaultValue(ctx.strokeStyle)", "'#000000'"); |
| shouldBe("checkDefaultValue(ctx.fillStyle)", "'#000000'"); |
| shouldBe("checkDefaultValue(ctx.shadowColor)", "'rgba(0, 0, 0, 0)'"); |
| |
| trySettingColorWithOverrideAlpha("'red'", 0, "'rgba(255, 0, 0, 0)'"); |
| trySettingColorWithOverrideAlpha("'black'", 1, "'#000000'"); |
| |
| trySettingRGBA(0, 0, 0, 0.0, "'rgba(0, 0, 0, 0)'"); |
| trySettingRGBA(255, 255, 255, 1.0, "'#ffffff'"); |
| trySettingRGBA(255, 0, 0, 0.0, "'rgba(255, 0, 0, 0)'"); |
| trySettingRGBA(255, 0, 0, 0.4, "'rgba(255, 0, 0, 0.4)'"); |
| |
| trySettingCMYKA(0, 0, 0, 0, 0.0, "'rgba(255, 255, 255, 0)'"); |
| trySettingCMYKA(0, 0, 0, 0, 1.0, "'#ffffff'"); |
| trySettingCMYKA(0, 1, 0, 0, 0.0, "'rgba(255, 0, 255, 0)'"); |
| trySettingCMYKA(0, 1, 0, 0, 1.0, "'#ff00ff'"); |
| trySettingCMYKA(0, 0, 0, 1, 0.0, "'rgba(0, 0, 0, 0)'"); |
| trySettingCMYKA(0, 0, 0, 1, 1.0, "'#000000'"); |
| |
| trySettingGrayLevel(0.0, "'#000000'"); |
| trySettingGrayLevel(0.5, "'#808080'"); |
| trySettingGrayLevel(1.0, "'#ffffff'"); |
| |
| trySettingGrayLevelWithAlpha(0.0, 0.0, "'rgba(0, 0, 0, 0)'"); |
| trySettingGrayLevelWithAlpha(0.0, 0.4, "'rgba(0, 0, 0, 0.4)'"); |
| trySettingGrayLevelWithAlpha(0.0, 1.0, "'#000000'"); |
| trySettingGrayLevelWithAlpha(0.5, 0.0, "'rgba(128, 128, 128, 0)'"); |
| trySettingGrayLevelWithAlpha(0.5, 0.4, "'rgba(128, 128, 128, 0.4)'"); |
| trySettingGrayLevelWithAlpha(0.5, 1.0, "'#808080'"); |
| trySettingGrayLevelWithAlpha(1.0, 0.0, "'rgba(255, 255, 255, 0)'"); |
| trySettingGrayLevelWithAlpha(1.0, 0.4, "'rgba(255, 255, 255, 0.4)'"); |
| trySettingGrayLevelWithAlpha(1.0, 1.0, "'#ffffff'"); |
| |
| trySettingColor("'transparent'", "'rgba(0, 0, 0, 0)'"); |
| trySettingColor("'red'", "'#ff0000'"); |
| trySettingColor("'white'", "'#ffffff'"); |
| trySettingColor("''", "'#666666'"); |
| trySettingColor("'RGBA(0, 0, 0, 0)'", "'rgba(0, 0, 0, 0)'"); |
| trySettingColor("'rgba(0,255,0,1.0)'", "'#00ff00'"); |
| trySettingColor("'rgba(1,2,3,0.4)'", "'rgba(1, 2, 3, 0.4)'"); |
| trySettingColor("'RgB(1,2,3)'", "'#010203'"); |
| trySettingColor("'rGbA(1,2,3,0)'", "'rgba(1, 2, 3, 0)'"); |
| trySettingColor("true", "'#666666'"); |
| trySettingColor("false", "'#666666'"); |
| trySettingColor("0", "'#666666'"); |
| trySettingColor("1", "'#666666'"); |
| trySettingColor("-1", "'#666666'"); |
| trySettingColor("NaN", "'#666666'"); |
| trySettingColor("Infinity", "'#666666'"); |
| trySettingColor("null", "'#666666'"); |
| trySettingColor("'left'", "'#666666'"); |
| trySettingColor("'right'", "'#666666'"); |
| trySettingColor("'center'", "'#666666'"); |
| trySettingColor("'border'", "'#666666'"); |
| trySettingColor("'border-box'", "'#666666'"); |
| trySettingColor("'content'", "'#666666'"); |
| trySettingColor("'logical'", "'#666666'"); |
| trySettingColor("'visual'", "'#666666'"); |
| |
| trySettingColorWithSetter("'transparent'", "'rgba(0, 0, 0, 0)'"); |
| trySettingColorWithSetter("'red'", "'#ff0000'"); |
| trySettingColorWithSetter("'white'", "'#ffffff'"); |
| trySettingColorWithSetter("''", "'#666666'"); |
| trySettingColorWithSetter("'RGBA(0, 0, 0, 0)'", "'rgba(0, 0, 0, 0)'"); |
| trySettingColorWithSetter("'rgba(0,255,0,1.0)'", "'#00ff00'"); |
| trySettingColorWithSetter("'rgba(1,2,3,0.4)'", "'rgba(1, 2, 3, 0.4)'"); |
| trySettingColorWithSetter("'RgB(1,2,3)'", "'#010203'"); |
| trySettingColorWithSetter("'rGbA(1,2,3,0)'", "'rgba(1, 2, 3, 0)'"); |
| |
| shouldBe("tryClearShadowAfterSettingColor('red')", "'rgba(0, 0, 0, 0)'"); |
| shouldBe("tryClearShadowAfterSettingColor('rgba(0, 5, 10, 0.4)')", "'rgba(0, 0, 0, 0)'"); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |