github.com/jancarloviray/community@v0.41.1-0.20170124221257-33a66c87cf2f/app/public/codemirror/mode/verilog/test.js (about)

     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  })();