OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #if SK_SUPPORT_GPU | 8 #if SK_SUPPORT_GPU |
9 #include "Test.h" | 9 #include "Test.h" |
10 #include "gl/GrGLSLPrettyPrint.h" | 10 #include "gl/GrGLSLPrettyPrint.h" |
11 | 11 |
12 #define ASSERT(x) REPORTER_ASSERT(r, x) | 12 #define ASSERT(x) REPORTER_ASSERT(r, x) |
13 | 13 |
14 const SkString input1("#this is not a realshader\nvec4 some stuff;outside of a f
unction;" | 14 const SkString input1("#this is not a realshader\nvec4 some stuff;outside of a f
unction;" |
15 "int i(int b, int c) { { some stuff;} fake block; //comment
s\n return i;}" | 15 "int i(int b, int c) { { some stuff;} fake block; //comment
s\n return i;}" |
16 "void main()" | 16 "void main()"); |
17 "{nowin a function;{indenting;{abit more;dreadedfor((;;)(;)
((;;);)){doingstuff" | 17 const SkString input2("{nowin a function;{indenting;{abit more;dreadedfor((;;)(;
)((;;);)){" |
| 18 "doingstuff" |
18 ";for(;;;){and more stufff;mixed garbage\n\n\t\t\t\t\n/*usi
ng this" | 19 ";for(;;;){and more stufff;mixed garbage\n\n\t\t\t\t\n/*usi
ng this" |
19 " comment\n is" | 20 " comment\n is"); |
20 " dangerous\ndo so at your own\n risk*/;\n\n\t\t\t\n" | 21 const SkString input3(" dangerous\ndo so at your own\n risk*/;\n\n\t\t\t\n" |
21 "//a comment\n}}a; little ; love; for ; leading; spaces
;} " | 22 "//a comment"); |
| 23 const SkString input4("breaking in comment"); |
| 24 const SkString input5("continuing the comment"); |
| 25 const SkString input6("\n}}a; little ; love; for ; leading; spaces;} " |
22 "an struct = { int a; int b; };" | 26 "an struct = { int a; int b; };" |
23 "int[5] arr = int[5](1,2,3,4,5);} some code at the bottom;
for(;;) {} }"); | 27 "int[5] arr = int[5](1,2,3,4,5);} some code at the bottom;
for(;;) {} }"); |
24 | 28 |
25 const SkString output1( | 29 const SkString output1( |
26 " 1\t#this is not a realshader\n" | 30 " 1\t#this is not a realshader\n" |
27 " 2\tvec4 some stuff;\n" | 31 " 2\tvec4 some stuff;\n" |
28 " 3\toutside of a function;\n" | 32 " 3\toutside of a function;\n" |
29 " 4\tint i(int b, int c) \n" | 33 " 4\tint i(int b, int c) \n" |
30 " 5\t{\n" | 34 " 5\t{\n" |
31 " 6\t\t{\n" | 35 " 6\t\t{\n" |
(...skipping 13 matching lines...) Expand all Loading... |
45 " 20\t\t\t\tdreadedfor((;;)(;)((;;);))\n" | 49 " 20\t\t\t\tdreadedfor((;;)(;)((;;);))\n" |
46 " 21\t\t\t\t{\n" | 50 " 21\t\t\t\t{\n" |
47 " 22\t\t\t\t\tdoingstuff;\n" | 51 " 22\t\t\t\t\tdoingstuff;\n" |
48 " 23\t\t\t\t\tfor(;;;)\n" | 52 " 23\t\t\t\t\tfor(;;;)\n" |
49 " 24\t\t\t\t\t{\n" | 53 " 24\t\t\t\t\t{\n" |
50 " 25\t\t\t\t\t\tand more stufff;\n" | 54 " 25\t\t\t\t\t\tand more stufff;\n" |
51 " 26\t\t\t\t\t\tmixed garbage/*using this comment\n" | 55 " 26\t\t\t\t\t\tmixed garbage/*using this comment\n" |
52 " 27\t\t\t\t\t\t is dangerous\n" | 56 " 27\t\t\t\t\t\t is dangerous\n" |
53 " 28\t\t\t\t\t\tdo so at your own\n" | 57 " 28\t\t\t\t\t\tdo so at your own\n" |
54 " 29\t\t\t\t\t\t risk*/;\n" | 58 " 29\t\t\t\t\t\t risk*/;\n" |
55 " 30\t\t\t\t\t\t//a comment\n" | 59 " 30\t\t\t\t\t\t//a commentbreaking in commentcontinuing the comment\n" |
56 " 31\t\t\t\t\t}\n" | 60 " 31\t\t\t\t\t}\n" |
57 " 32\t\t\t\t}\n" | 61 " 32\t\t\t\t}\n" |
58 " 33\t\t\t\ta;\n" | 62 " 33\t\t\t\ta;\n" |
59 " 34\t\t\t\tlittle ;\n" | 63 " 34\t\t\t\tlittle ;\n" |
60 " 35\t\t\t\tlove;\n" | 64 " 35\t\t\t\tlove;\n" |
61 " 36\t\t\t\tfor ;\n" | 65 " 36\t\t\t\tfor ;\n" |
62 " 37\t\t\t\tleading;\n" | 66 " 37\t\t\t\tleading;\n" |
63 " 38\t\t\t\tspaces;\n" | 67 " 38\t\t\t\tspaces;\n" |
64 " 39\t\t\t}\n" | 68 " 39\t\t\t}\n" |
65 " 40\t\t\tan struct = \n" | 69 " 40\t\t\tan struct = \n" |
66 " 41\t\t\t{\n" | 70 " 41\t\t\t{\n" |
67 " 42\t\t\t\tint a;\n" | 71 " 42\t\t\t\tint a;\n" |
68 " 43\t\t\t\tint b;\n" | 72 " 43\t\t\t\tint b;\n" |
69 " 44\t\t\t}\n" | 73 " 44\t\t\t}\n" |
70 " 45\t\t\t;\n" | 74 " 45\t\t\t;\n" |
71 " 46\t\t\tint[5] arr = int[5](1,2,3,4,5);\n" | 75 " 46\t\t\tint[5] arr = int[5](1,2,3,4,5);\n" |
72 " 47\t\t}\n" | 76 " 47\t\t}\n" |
73 " 48\t\tsome code at the bottom;\n" | 77 " 48\t\tsome code at the bottom;\n" |
74 " 49\t\tfor(;;) \n" | 78 " 49\t\tfor(;;) \n" |
75 " 50\t\t{\n" | 79 " 50\t\t{\n" |
76 " 51\t\t}\n" | 80 " 51\t\t}\n" |
77 " 52\t}\n" | 81 " 52\t}\n" |
78 " 53\t"); | 82 " 53\t"); |
79 | 83 |
80 const SkString input2("{;;{{{{;;;{{{{{{{{{{{###\n##\n#####(((((((((((((unbalance
d verything;;;" | 84 const SkString neg1("{;;{{{{;;;{{{{{{{{{{{"); |
81 "}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}" | 85 const SkString neg2("###\n##\n#####(((((((((((((unbalanced verything;;;"); |
| 86 const SkString neg3("}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}" |
82 ";;;;;;/////"); | 87 ";;;;;;/////"); |
83 | 88 |
84 DEF_TEST(GrGLSLPrettyPrint, r) { | 89 DEF_TEST(GrGLSLPrettyPrint, r) { |
85 SkString test = GrGLSLPrettyPrint::PrettyPrintGLSL(input1, true); | 90 SkTArray<const char*> testStr; |
| 91 SkTArray<int> lengths; |
| 92 testStr.push_back(input1.c_str()); |
| 93 lengths.push_back((int)input1.size()); |
| 94 testStr.push_back(input2.c_str()); |
| 95 lengths.push_back((int)input2.size()); |
| 96 testStr.push_back(input3.c_str()); |
| 97 lengths.push_back((int)input3.size()); |
| 98 testStr.push_back(input4.c_str()); |
| 99 lengths.push_back((int)input4.size()); |
| 100 testStr.push_back(input5.c_str()); |
| 101 lengths.push_back((int)input5.size()); |
| 102 testStr.push_back(input6.c_str()); |
| 103 lengths.push_back((int)input6.size()); |
| 104 |
| 105 SkString test = GrGLSLPrettyPrint::PrettyPrintGLSL(testStr.begin(), lengths.
begin(), |
| 106 testStr.count(), true); |
86 ASSERT(output1 == test); | 107 ASSERT(output1 == test); |
87 | 108 |
| 109 testStr.reset(); |
| 110 lengths.reset(); |
| 111 testStr.push_back(neg1.c_str()); |
| 112 lengths.push_back((int)neg1.size()); |
| 113 testStr.push_back(neg2.c_str()); |
| 114 lengths.push_back((int)neg2.size()); |
| 115 testStr.push_back(neg3.c_str()); |
| 116 lengths.push_back((int)neg3.size()); |
| 117 |
88 // Just test we don't crash with garbage input | 118 // Just test we don't crash with garbage input |
89 ASSERT(GrGLSLPrettyPrint::PrettyPrintGLSL(input2, true).c_str() != NULL); | 119 ASSERT(GrGLSLPrettyPrint::PrettyPrintGLSL(testStr.begin(), lengths.begin(),
1, |
| 120 true).c_str() != NULL); |
90 } | 121 } |
91 | 122 |
92 #endif | 123 #endif |
OLD | NEW |