aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickcanvasitem
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@digia.com>2013-08-01 20:16:58 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-08-05 14:31:03 +0200
commit0cca56f30d6a0290841859a58f517cece13d8d81 (patch)
treeb45edddde4393f4a35fc2d062a9f8b11be90f063 /tests/auto/quick/qquickcanvasitem
parent467d28a1449e9b67920fc416c232d314ae9bcb96 (diff)
Support multiple quoted font families in Context2D font property.
Currently, it's not possible to specify more than one font family in Context2D's font property. Also, any family with spaces in its name will fail to be read, and quoting the name will also fail. This patch makes it possible to specify several font families as per the CSS shorthand font property spec, as well as quoting of font families with spaces in their names. Task-number: QTBUG-32727 Change-Id: I2bc1f1d2b7f5f8f0519e73f4001b4a8242bb039c Reviewed-by: Karim Pinter <karim.pinter@digia.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'tests/auto/quick/qquickcanvasitem')
-rw-r--r--tests/auto/quick/qquickcanvasitem/data/tst_context.qml77
1 files changed, 49 insertions, 28 deletions
diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_context.qml b/tests/auto/quick/qquickcanvasitem/data/tst_context.qml
index ab351f0de8..b18250291e 100644
--- a/tests/auto/quick/qquickcanvasitem/data/tst_context.qml
+++ b/tests/auto/quick/qquickcanvasitem/data/tst_context.qml
@@ -111,6 +111,14 @@ Canvas {
{ string: "bold 12px sans-serif", expected: "sans-serif,-1,12,5,75,0,0,0,0,0" },
{ string: "0 12px sans-serif", expected: "sans-serif,-1,12,5,0,0,0,0,0,0" },
{ string: "small-caps 12px sans-serif", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ { string: "12px \"sans-serif\"", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ { string: "12px 'sans-serif'", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ // sans-serif will always be chosen, but this still tests that multiple families can be read.
+ { string: "12px 'sans-serif' 'cursive'", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ { string: "12px sans-serif 'cursive' monospace", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ { string: "12px sans-serif 'cursive' monospace ", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ { string: " 12px sans-serif 'cursive' monospace ", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" },
+ { string: " 12px sans-serif 'cursive' monospace ", expected: "sans-serif,-1,12,5,50,0,0,0,0,0" }
];
for (var i = 0; i < validFonts.length; ++i) {
ctx.font = validFonts[i].string;
@@ -125,38 +133,51 @@ Canvas {
var ctx = canvas.getContext("2d");
var originalFont = ctx.font;
- var i = 0;
- var insufficientQtyTokens = ["", "12px", "sans-serif"];
- for (i = 0; i < insufficientQtyTokens.length; ++i) {
- ignoreWarning("Context2D: Insufficent amount of tokens in font string.");
- ctx.font = insufficientQtyTokens[i];
- compare(ctx.font, originalFont);
- }
+ var fontStrings = [
+ "",
+ "12px",
+ "sans-serif",
+ "z12px sans-serif",
+ "1z2px sans-serif",
+ "12zpx sans-serif",
+ "12pxz sans-serif",
+ "sans-serif 12px",
+ "12px !@weeeeeeee!@!@Don'tNameYourFontThis",
+ "12px )(&*^^^%#$@*!!@#$JSPOR)",
+ "normal normal normal normal 12px sans-serif",
+ "normal normal bold bold 12px sans-serif",
+ "bold bold 12px sans-serif",
+ "12px 'cursive\"",
+ "12px 'cursive\" sans-serif",
+ "12px 'cursive"
+ ];
- var invalidFontSizes = ["z12px sans-serif", "1z2px sans-serif", "12zpx sans-serif",
- "12pzx sans-serif", "12pxz sans-serif", "sans-serif 12px"];
- for (i = 0; i < invalidFontSizes.length; ++i) {
- ignoreWarning("Context2D: A font size of \"" + invalidFontSizes[i].split(" ")[0] + "\" is invalid.");
- ctx.font = invalidFontSizes[i];
- compare(ctx.font, originalFont);
- }
+ var ignoredWarnings = [
+ "Context2D: Font string is empty.",
+ "Context2D: Missing or misplaced font family in font string (it must come after the font size).",
+ "Context2D: Invalid font size unit in font string.",
+ "Context2D: A font size of \"z12\" is invalid.",
+ "Context2D: A font size of \"1z2\" is invalid.",
+ "Context2D: A font size of \"12z\" is invalid.",
+ "Context2D: Invalid font size unit in font string.",
+ "Context2D: Missing or misplaced font family in font string (it must come after the font size).",
+ "Context2D: Unclosed quote in font string.",
+ "Context2D: The font families specified are invalid: )(&*^^^%#$@*!!@#$JSPOR)",
+ "Context2D: Duplicate token \"normal\" found in font string.",
+ "Context2D: Duplicate token \"bold\" found in font string.",
+ "Context2D: Duplicate token \"bold\" found in font string.",
+ "Context2D: Mismatched quote in font string.",
+ "Context2D: Mismatched quote in font string.",
+ "Context2D: Unclosed quote in font string."
+ ];
- var invalidFontFamilies = ["12px !@weeeeeeee!@!@Don'tNameYourFontThis", "12px )(&*^^^%#$@*!!@#$JSPOR)"];
- for (i = 0; i < invalidFontFamilies.length; ++i) {
- ignoreWarning("Context2D: The font family \"" + invalidFontFamilies[i].split(" ")[1] + "\" is invalid.");
- ctx.font = invalidFontFamilies[i];
- compare(ctx.font, originalFont);
- }
+ // Sanity check...
+ compare(ignoredWarnings.length, fontStrings.length);
- var duplicates = [
- { duplicate: "normal", string: "normal normal normal normal 12px sans-serif" },
- { duplicate: "bold", string: "normal normal bold bold 12px sans-serif" },
- { duplicate: "bold", string: "bold bold 12px sans-serif" }
- ];
- for (i = 0; i < duplicates.length; ++i) {
- ignoreWarning("Context2D: Duplicate token \"" + duplicates[i].duplicate + "\" found in font string.");
- ctx.font = duplicates[i].string;
+ for (var i = 0; i < fontStrings.length; ++i) {
+ ignoreWarning(ignoredWarnings[i]);
+ ctx.font = fontStrings[i];
compare(ctx.font, originalFont);
}
}