test.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // CodeMirror, copyright (c) by Marijn Haverbeke and others
  2. // Distributed under an MIT license: https://codemirror.net/LICENSE
  3. ;(function () {
  4. var mode = CodeMirror.getMode({ indentUnit: 2 }, 'powershell')
  5. function MT(name) {
  6. test.mode(name, mode, Array.prototype.slice.call(arguments, 1))
  7. }
  8. function forEach(arr, f) {
  9. for (var i = 0; i < arr.length; i++) f(arr[i], i)
  10. }
  11. MT('comment', '[number 1][comment # A]')
  12. MT('comment_multiline', '[number 1][comment <#]', '[comment ABC]', '[comment #>][number 2]')
  13. forEach(
  14. [
  15. '0',
  16. '1234',
  17. '12kb',
  18. '12mb',
  19. '12Gb',
  20. '12Tb',
  21. '12PB',
  22. '12L',
  23. '12D',
  24. '12lkb',
  25. '12dtb',
  26. '1.234',
  27. '1.234e56',
  28. '1.',
  29. '1.e2',
  30. '.2',
  31. '.2e34',
  32. '1.2MB',
  33. '1.kb',
  34. '.1dTB',
  35. '1.e1gb',
  36. '.2',
  37. '.2e34',
  38. '0x1',
  39. '0xabcdef',
  40. '0x3tb',
  41. '0xelmb',
  42. ],
  43. function (number) {
  44. MT('number_' + number, '[number ' + number + ']')
  45. }
  46. )
  47. MT('string_literal_escaping', "[string 'a''']")
  48. MT('string_literal_variable', "[string 'a $x']")
  49. MT('string_escaping_1', '[string "a `""]')
  50. MT('string_escaping_2', '[string "a """]')
  51. MT('string_variable_escaping', '[string "a `$x"]')
  52. MT('string_variable', '[string "a ][variable-2 $x][string b"]')
  53. MT('string_variable_spaces', '[string "a ][variable-2 ${x y}][string b"]')
  54. MT('string_expression', '[string "a ][punctuation $(][variable-2 $x][operator +][number 3][punctuation )][string b"]')
  55. MT('string_expression_nested', '[string "A][punctuation $(][string "a][punctuation $(][string "w"][punctuation )][string b"][punctuation )][string B"]')
  56. MT('string_heredoc', '[string @"]', '[string abc]', '[string "@]')
  57. MT('string_heredoc_quotes', '[string @"]', '[string abc "\']', '[string "@]')
  58. MT('string_heredoc_variable', '[string @"]', '[string a ][variable-2 $x][string b]', '[string "@]')
  59. MT('string_heredoc_nested_string', '[string @"]', '[string a][punctuation $(][string "w"][punctuation )][string b]', '[string "@]')
  60. MT('string_heredoc_literal_quotes', "[string @']", '[string abc "\']', "[string '@]")
  61. MT('array', "[punctuation @(][string 'a'][punctuation ,][string 'b'][punctuation )]")
  62. MT('hash', "[punctuation @{][string 'key'][operator :][string 'value'][punctuation }]")
  63. MT('variable', '[variable-2 $test]')
  64. MT('variable_global', '[variable-2 $global:test]')
  65. MT('variable_spaces', '[variable-2 ${test test}]')
  66. MT('operator_splat', '[variable-2 @x]')
  67. MT('variable_builtin', '[builtin $ErrorActionPreference]')
  68. MT('variable_builtin_symbols', '[builtin $$]')
  69. MT('operator', '[operator +]')
  70. MT('operator_unary', '[operator +][number 3]')
  71. MT('operator_long', '[operator -match]')
  72. forEach(['(', ')', '[[', ']]', '{', '}', ',', '`', ';', '.', '\\'], function (punctuation) {
  73. MT('punctuation_' + punctuation.replace(/^[\[\]]/, ''), '[punctuation ' + punctuation + ']')
  74. })
  75. MT('keyword', '[keyword if]')
  76. MT('call_builtin', '[builtin Get-ChildItem]')
  77. })()