Subversion-Projekte lars-tiefland.ci

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
776 lars 1
// CodeMirror, copyright (c) by Marijn Haverbeke and others
2
// Distributed under an MIT license: http://codemirror.net/LICENSE
3
 
4
(function() {
5
  var mode = CodeMirror.getMode({indentUnit: 4}, "verilog");
6
  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
7
 
8
  MT("binary_literals",
9
     "[number 1'b0]",
10
     "[number 1'b1]",
11
     "[number 1'bx]",
12
     "[number 1'bz]",
13
     "[number 1'bX]",
14
     "[number 1'bZ]",
15
     "[number 1'B0]",
16
     "[number 1'B1]",
17
     "[number 1'Bx]",
18
     "[number 1'Bz]",
19
     "[number 1'BX]",
20
     "[number 1'BZ]",
21
     "[number 1'b0]",
22
     "[number 1'b1]",
23
     "[number 2'b01]",
24
     "[number 2'bxz]",
25
     "[number 2'b11]",
26
     "[number 2'b10]",
27
     "[number 2'b1Z]",
28
     "[number 12'b0101_0101_0101]",
29
     "[number 1'b 0]",
30
     "[number 'b0101]"
31
  );
32
 
33
  MT("octal_literals",
34
     "[number 3'o7]",
35
     "[number 3'O7]",
36
     "[number 3'so7]",
37
     "[number 3'SO7]"
38
  );
39
 
40
  MT("decimal_literals",
41
     "[number 0]",
42
     "[number 1]",
43
     "[number 7]",
44
     "[number 123_456]",
45
     "[number 'd33]",
46
     "[number 8'd255]",
47
     "[number 8'D255]",
48
     "[number 8'sd255]",
49
     "[number 8'SD255]",
50
     "[number 32'd123]",
51
     "[number 32 'd123]",
52
     "[number 32 'd 123]"
53
  );
54
 
55
  MT("hex_literals",
56
     "[number 4'h0]",
57
     "[number 4'ha]",
58
     "[number 4'hF]",
59
     "[number 4'hx]",
60
     "[number 4'hz]",
61
     "[number 4'hX]",
62
     "[number 4'hZ]",
63
     "[number 32'hdc78]",
64
     "[number 32'hDC78]",
65
     "[number 32 'hDC78]",
66
     "[number 32'h DC78]",
67
     "[number 32 'h DC78]",
68
     "[number 32'h44x7]",
69
     "[number 32'hFFF?]"
70
  );
71
 
72
  MT("real_number_literals",
73
     "[number 1.2]",
74
     "[number 0.1]",
75
     "[number 2394.26331]",
76
     "[number 1.2E12]",
77
     "[number 1.2e12]",
78
     "[number 1.30e-2]",
79
     "[number 0.1e-0]",
80
     "[number 23E10]",
81
     "[number 29E-2]",
82
     "[number 236.123_763_e-12]"
83
  );
84
 
85
  MT("operators",
86
     "[meta ^]"
87
  );
88
 
89
  MT("keywords",
90
     "[keyword logic]",
91
     "[keyword logic] [variable foo]",
92
     "[keyword reg] [variable abc]"
93
  );
94
 
95
  MT("variables",
96
     "[variable _leading_underscore]",
97
     "[variable _if]",
98
     "[number 12] [variable foo]",
99
     "[variable foo] [number 14]"
100
  );
101
 
102
  MT("tick_defines",
103
     "[def `FOO]",
104
     "[def `foo]",
105
     "[def `FOO_bar]"
106
  );
107
 
108
  MT("system_calls",
109
     "[meta $display]",
110
     "[meta $vpi_printf]"
111
  );
112
 
113
  MT("line_comment", "[comment // Hello world]");
114
 
115
  // Alignment tests
116
  MT("align_port_map_style1",
117
     /**
118
      * mod mod(.a(a),
119
      *         .b(b)
120
      *        );
121
      */
122
     "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],",
123
     "        .[variable b][bracket (][variable b][bracket )]",
124
     "       [bracket )];",
125
     ""
126
  );
127
 
128
  MT("align_port_map_style2",
129
     /**
130
      * mod mod(
131
      *     .a(a),
132
      *     .b(b)
133
      * );
134
      */
135
     "[variable mod] [variable mod][bracket (]",
136
     "    .[variable a][bracket (][variable a][bracket )],",
137
     "    .[variable b][bracket (][variable b][bracket )]",
138
     "[bracket )];",
139
     ""
140
  );
141
 
142
  // Indentation tests
143
  MT("indent_single_statement_if",
144
      "[keyword if] [bracket (][variable foo][bracket )]",
145
      "    [keyword break];",
146
      ""
147
  );
148
 
149
  MT("no_indent_after_single_line_if",
150
      "[keyword if] [bracket (][variable foo][bracket )] [keyword break];",
151
      ""
152
  );
153
 
154
  MT("indent_after_if_begin_same_line",
155
      "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]",
156
      "    [keyword break];",
157
      "    [keyword break];",
158
      "[keyword end]",
159
      ""
160
  );
161
 
162
  MT("indent_after_if_begin_next_line",
163
      "[keyword if] [bracket (][variable foo][bracket )]",
164
      "    [keyword begin]",
165
      "        [keyword break];",
166
      "        [keyword break];",
167
      "    [keyword end]",
168
      ""
169
  );
170
 
171
  MT("indent_single_statement_if_else",
172
      "[keyword if] [bracket (][variable foo][bracket )]",
173
      "    [keyword break];",
174
      "[keyword else]",
175
      "    [keyword break];",
176
      ""
177
  );
178
 
179
  MT("indent_if_else_begin_same_line",
180
      "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]",
181
      "    [keyword break];",
182
      "    [keyword break];",
183
      "[keyword end] [keyword else] [keyword begin]",
184
      "    [keyword break];",
185
      "    [keyword break];",
186
      "[keyword end]",
187
      ""
188
  );
189
 
190
  MT("indent_if_else_begin_next_line",
191
      "[keyword if] [bracket (][variable foo][bracket )]",
192
      "    [keyword begin]",
193
      "        [keyword break];",
194
      "        [keyword break];",
195
      "    [keyword end]",
196
      "[keyword else]",
197
      "    [keyword begin]",
198
      "        [keyword break];",
199
      "        [keyword break];",
200
      "    [keyword end]",
201
      ""
202
  );
203
 
204
  MT("indent_if_nested_without_begin",
205
      "[keyword if] [bracket (][variable foo][bracket )]",
206
      "    [keyword if] [bracket (][variable foo][bracket )]",
207
      "        [keyword if] [bracket (][variable foo][bracket )]",
208
      "            [keyword break];",
209
      ""
210
  );
211
 
212
  MT("indent_case",
213
      "[keyword case] [bracket (][variable state][bracket )]",
214
      "    [variable FOO]:",
215
      "        [keyword break];",
216
      "    [variable BAR]:",
217
      "        [keyword break];",
218
      "[keyword endcase]",
219
      ""
220
  );
221
 
222
  MT("unindent_after_end_with_preceding_text",
223
      "[keyword begin]",
224
      "    [keyword break]; [keyword end]",
225
      ""
226
  );
227
 
228
  MT("export_function_one_line_does_not_indent",
229
     "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];",
230
     ""
231
  );
232
 
233
  MT("export_task_one_line_does_not_indent",
234
     "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];",
235
     ""
236
  );
237
 
238
  MT("export_function_two_lines_indents_properly",
239
    "[keyword export]",
240
    "    [string \"DPI-C\"] [keyword function] [variable helloFromSV];",
241
    ""
242
  );
243
 
244
  MT("export_task_two_lines_indents_properly",
245
    "[keyword export]",
246
    "    [string \"DPI-C\"] [keyword task] [variable helloFromSV];",
247
    ""
248
  );
249
 
250
  MT("import_function_one_line_does_not_indent",
251
    "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];",
252
    ""
253
  );
254
 
255
  MT("import_task_one_line_does_not_indent",
256
    "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];",
257
    ""
258
  );
259
 
260
  MT("import_package_single_line_does_not_indent",
261
    "[keyword import] [variable p]::[variable x];",
262
    "[keyword import] [variable p]::[variable y];",
263
    ""
264
  );
265
 
266
  MT("covergoup_with_function_indents_properly",
267
    "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];",
268
    "    [variable c] : [keyword coverpoint] [variable c];",
269
    "[keyword endgroup]: [variable cg]",
270
    ""
271
  );
272
 
273
})();