oreorenasass 3.4.4 → 3.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +50 -70
  4. data/Rakefile +5 -26
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/bin/sass +1 -1
  8. data/bin/scss +1 -1
  9. data/lib/sass.rb +12 -19
  10. data/lib/sass/cache_stores/base.rb +2 -2
  11. data/lib/sass/cache_stores/chain.rb +1 -2
  12. data/lib/sass/cache_stores/filesystem.rb +5 -1
  13. data/lib/sass/cache_stores/memory.rb +1 -1
  14. data/lib/sass/cache_stores/null.rb +2 -2
  15. data/lib/sass/callbacks.rb +0 -1
  16. data/lib/sass/css.rb +13 -11
  17. data/lib/sass/engine.rb +173 -424
  18. data/lib/sass/environment.rb +58 -148
  19. data/lib/sass/error.rb +14 -11
  20. data/lib/sass/exec.rb +703 -5
  21. data/lib/sass/importers/base.rb +6 -49
  22. data/lib/sass/importers/filesystem.rb +19 -44
  23. data/lib/sass/logger.rb +4 -1
  24. data/lib/sass/logger/base.rb +4 -2
  25. data/lib/sass/logger/log_level.rb +7 -3
  26. data/lib/sass/media.rb +23 -20
  27. data/lib/sass/plugin.rb +7 -7
  28. data/lib/sass/plugin/compiler.rb +145 -304
  29. data/lib/sass/plugin/configuration.rb +23 -18
  30. data/lib/sass/plugin/merb.rb +1 -1
  31. data/lib/sass/plugin/staleness_checker.rb +3 -3
  32. data/lib/sass/repl.rb +3 -3
  33. data/lib/sass/script.rb +8 -35
  34. data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
  35. data/lib/sass/script/bool.rb +18 -0
  36. data/lib/sass/script/color.rb +606 -0
  37. data/lib/sass/script/css_lexer.rb +4 -8
  38. data/lib/sass/script/css_parser.rb +2 -5
  39. data/lib/sass/script/funcall.rb +245 -0
  40. data/lib/sass/script/functions.rb +408 -1491
  41. data/lib/sass/script/interpolation.rb +79 -0
  42. data/lib/sass/script/lexer.rb +68 -172
  43. data/lib/sass/script/list.rb +85 -0
  44. data/lib/sass/script/literal.rb +221 -0
  45. data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
  46. data/lib/sass/script/{value/null.rb → null.rb} +7 -14
  47. data/lib/sass/script/{value/number.rb → number.rb} +75 -152
  48. data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
  49. data/lib/sass/script/parser.rb +110 -245
  50. data/lib/sass/script/string.rb +51 -0
  51. data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
  52. data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
  53. data/lib/sass/script/variable.rb +58 -0
  54. data/lib/sass/scss/css_parser.rb +3 -9
  55. data/lib/sass/scss/parser.rb +421 -450
  56. data/lib/sass/scss/rx.rb +11 -19
  57. data/lib/sass/scss/static_parser.rb +7 -321
  58. data/lib/sass/selector.rb +194 -68
  59. data/lib/sass/selector/abstract_sequence.rb +14 -29
  60. data/lib/sass/selector/comma_sequence.rb +25 -108
  61. data/lib/sass/selector/sequence.rb +66 -159
  62. data/lib/sass/selector/simple.rb +25 -23
  63. data/lib/sass/selector/simple_sequence.rb +63 -173
  64. data/lib/sass/shared.rb +1 -1
  65. data/lib/sass/supports.rb +15 -13
  66. data/lib/sass/tree/charset_node.rb +1 -1
  67. data/lib/sass/tree/comment_node.rb +3 -3
  68. data/lib/sass/tree/css_import_node.rb +11 -11
  69. data/lib/sass/tree/debug_node.rb +2 -2
  70. data/lib/sass/tree/directive_node.rb +4 -21
  71. data/lib/sass/tree/each_node.rb +8 -8
  72. data/lib/sass/tree/extend_node.rb +7 -14
  73. data/lib/sass/tree/for_node.rb +4 -4
  74. data/lib/sass/tree/function_node.rb +4 -9
  75. data/lib/sass/tree/if_node.rb +1 -1
  76. data/lib/sass/tree/import_node.rb +5 -4
  77. data/lib/sass/tree/media_node.rb +14 -4
  78. data/lib/sass/tree/mixin_def_node.rb +4 -4
  79. data/lib/sass/tree/mixin_node.rb +8 -21
  80. data/lib/sass/tree/node.rb +12 -54
  81. data/lib/sass/tree/prop_node.rb +20 -39
  82. data/lib/sass/tree/return_node.rb +2 -3
  83. data/lib/sass/tree/root_node.rb +3 -19
  84. data/lib/sass/tree/rule_node.rb +22 -35
  85. data/lib/sass/tree/supports_node.rb +13 -0
  86. data/lib/sass/tree/trace_node.rb +1 -2
  87. data/lib/sass/tree/variable_node.rb +3 -9
  88. data/lib/sass/tree/visitors/base.rb +8 -5
  89. data/lib/sass/tree/visitors/check_nesting.rb +19 -49
  90. data/lib/sass/tree/visitors/convert.rb +56 -74
  91. data/lib/sass/tree/visitors/cssize.rb +74 -202
  92. data/lib/sass/tree/visitors/deep_copy.rb +5 -10
  93. data/lib/sass/tree/visitors/extend.rb +7 -7
  94. data/lib/sass/tree/visitors/perform.rb +185 -278
  95. data/lib/sass/tree/visitors/set_options.rb +6 -20
  96. data/lib/sass/tree/visitors/to_css.rb +81 -234
  97. data/lib/sass/tree/warn_node.rb +2 -2
  98. data/lib/sass/tree/while_node.rb +2 -2
  99. data/lib/sass/util.rb +152 -522
  100. data/lib/sass/util/multibyte_string_scanner.rb +0 -2
  101. data/lib/sass/util/subset_map.rb +3 -4
  102. data/lib/sass/util/test.rb +1 -0
  103. data/lib/sass/version.rb +22 -20
  104. data/test/Gemfile +3 -0
  105. data/test/Gemfile.lock +10 -0
  106. data/test/sass/cache_test.rb +20 -62
  107. data/test/sass/callbacks_test.rb +1 -1
  108. data/test/sass/conversion_test.rb +2 -296
  109. data/test/sass/css2sass_test.rb +4 -23
  110. data/test/sass/engine_test.rb +354 -411
  111. data/test/sass/exec_test.rb +2 -2
  112. data/test/sass/extend_test.rb +145 -324
  113. data/test/sass/functions_test.rb +86 -873
  114. data/test/sass/importer_test.rb +21 -241
  115. data/test/sass/logger_test.rb +1 -1
  116. data/test/sass/more_results/more_import.css +1 -1
  117. data/test/sass/plugin_test.rb +26 -16
  118. data/test/sass/results/compact.css +1 -1
  119. data/test/sass/results/complex.css +4 -4
  120. data/test/sass/results/expanded.css +1 -1
  121. data/test/sass/results/import.css +1 -1
  122. data/test/sass/results/import_charset_ibm866.css +2 -2
  123. data/test/sass/results/mixins.css +17 -17
  124. data/test/sass/results/nested.css +1 -1
  125. data/test/sass/results/parent_ref.css +2 -2
  126. data/test/sass/results/script.css +3 -3
  127. data/test/sass/results/scss_import.css +1 -1
  128. data/test/sass/script_conversion_test.rb +7 -36
  129. data/test/sass/script_test.rb +53 -485
  130. data/test/sass/scss/css_test.rb +28 -143
  131. data/test/sass/scss/rx_test.rb +4 -4
  132. data/test/sass/scss/scss_test.rb +325 -2119
  133. data/test/sass/templates/scss_import.scss +1 -2
  134. data/test/sass/test_helper.rb +1 -1
  135. data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
  136. data/test/sass/util/subset_map_test.rb +2 -2
  137. data/test/sass/util_test.rb +1 -86
  138. data/test/test_helper.rb +8 -37
  139. metadata +19 -66
  140. data/lib/sass/exec/base.rb +0 -187
  141. data/lib/sass/exec/sass_convert.rb +0 -264
  142. data/lib/sass/exec/sass_scss.rb +0 -424
  143. data/lib/sass/features.rb +0 -47
  144. data/lib/sass/script/tree.rb +0 -16
  145. data/lib/sass/script/tree/funcall.rb +0 -306
  146. data/lib/sass/script/tree/interpolation.rb +0 -118
  147. data/lib/sass/script/tree/list_literal.rb +0 -77
  148. data/lib/sass/script/tree/literal.rb +0 -45
  149. data/lib/sass/script/tree/map_literal.rb +0 -64
  150. data/lib/sass/script/tree/selector.rb +0 -26
  151. data/lib/sass/script/tree/variable.rb +0 -57
  152. data/lib/sass/script/value.rb +0 -11
  153. data/lib/sass/script/value/base.rb +0 -240
  154. data/lib/sass/script/value/bool.rb +0 -35
  155. data/lib/sass/script/value/color.rb +0 -680
  156. data/lib/sass/script/value/helpers.rb +0 -262
  157. data/lib/sass/script/value/list.rb +0 -113
  158. data/lib/sass/script/value/map.rb +0 -70
  159. data/lib/sass/script/value/string.rb +0 -97
  160. data/lib/sass/selector/pseudo.rb +0 -256
  161. data/lib/sass/source/map.rb +0 -210
  162. data/lib/sass/source/position.rb +0 -39
  163. data/lib/sass/source/range.rb +0 -41
  164. data/lib/sass/stack.rb +0 -120
  165. data/lib/sass/tree/at_root_node.rb +0 -83
  166. data/lib/sass/tree/error_node.rb +0 -18
  167. data/lib/sass/tree/keyframe_rule_node.rb +0 -15
  168. data/lib/sass/util/cross_platform_random.rb +0 -19
  169. data/lib/sass/util/normalized_map.rb +0 -130
  170. data/lib/sass/util/ordered_hash.rb +0 -192
  171. data/test/sass/compiler_test.rb +0 -232
  172. data/test/sass/encoding_test.rb +0 -219
  173. data/test/sass/source_map_test.rb +0 -977
  174. data/test/sass/superselector_test.rb +0 -191
  175. data/test/sass/util/normalized_map_test.rb +0 -51
  176. data/test/sass/value_helpers_test.rb +0 -179
@@ -1,191 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
-
4
- class SuperselectorTest < MiniTest::Test
5
- def test_superselector_reflexivity
6
- assert_superselector 'h1', 'h1'
7
- assert_superselector '.foo', '.foo'
8
- assert_superselector '#foo > .bar, baz', '#foo > .bar, baz'
9
- end
10
-
11
- def test_smaller_compound_superselector
12
- assert_strict_superselector '.foo', '.foo.bar'
13
- assert_strict_superselector '.bar', '.foo.bar'
14
- assert_strict_superselector 'a', 'a#b'
15
- assert_strict_superselector '#b', 'a#b'
16
- end
17
-
18
- def test_smaller_complex_superselector
19
- assert_strict_superselector '.bar', '.foo .bar'
20
- assert_strict_superselector '.bar', '.foo > .bar'
21
- assert_strict_superselector '.bar', '.foo + .bar'
22
- assert_strict_superselector '.bar', '.foo ~ .bar'
23
- end
24
-
25
- def test_selector_list_subset_superselector
26
- assert_strict_superselector '.foo, .bar', '.foo'
27
- assert_strict_superselector '.foo, .bar, .baz', '.foo, .baz'
28
- assert_strict_superselector '.foo, .baz, .qux', '.foo.bar, .baz.bang'
29
- end
30
-
31
- def test_leading_combinator_superselector
32
- refute_superselector '+ .foo', '.foo'
33
- refute_superselector '+ .foo', '.bar + .foo'
34
- end
35
-
36
- def test_trailing_combinator_superselector
37
- refute_superselector '.foo +', '.foo'
38
- refute_superselector '.foo +', '.foo + .bar'
39
- end
40
-
41
- def test_matching_combinator_superselector
42
- assert_strict_superselector '.foo + .bar', '.foo + .bar.baz'
43
- assert_strict_superselector '.foo + .bar', '.foo.baz + .bar'
44
- assert_strict_superselector '.foo > .bar', '.foo > .bar.baz'
45
- assert_strict_superselector '.foo > .bar', '.foo.baz > .bar'
46
- assert_strict_superselector '.foo ~ .bar', '.foo ~ .bar.baz'
47
- assert_strict_superselector '.foo ~ .bar', '.foo.baz ~ .bar'
48
- end
49
-
50
- def test_following_sibling_is_superselector_of_next_sibling
51
- assert_strict_superselector '.foo ~ .bar', '.foo + .bar.baz'
52
- assert_strict_superselector '.foo ~ .bar', '.foo.baz + .bar'
53
- end
54
-
55
- def test_descendant_is_superselector_of_child
56
- assert_strict_superselector '.foo .bar', '.foo > .bar.baz'
57
- assert_strict_superselector '.foo .bar', '.foo.baz > .bar'
58
- end
59
-
60
- def test_matches_is_superselector_of_constituent_selectors
61
- %w[matches -moz-any].each do |name|
62
- assert_strict_superselector ":#{name}(.foo, .bar)", '.foo.baz'
63
- assert_strict_superselector ":#{name}(.foo, .bar)", '.bar.baz'
64
- assert_strict_superselector ":#{name}(.foo .bar, .baz)", '.x .foo .bar'
65
- end
66
- end
67
-
68
- def test_matches_is_superselector_of_subset_matches
69
- assert_strict_superselector ':matches(.foo, .bar, .baz)', '#x:matches(.foo.bip, .baz.bang)'
70
- assert_strict_superselector ':-moz-any(.foo, .bar, .baz)', '#x:-moz-any(.foo.bip, .baz.bang)'
71
- end
72
-
73
- def test_matches_is_not_superselector_of_any
74
- refute_superselector ':matches(.foo, .bar)', ':-moz-any(.foo, .bar)'
75
- refute_superselector ':-moz-any(.foo, .bar)', ':matches(.foo, .bar)'
76
- end
77
-
78
- def test_matches_can_be_subselector
79
- %w[matches -moz-any].each do |name|
80
- assert_superselector '.foo', ":#{name}(.foo.bar)"
81
- assert_superselector '.foo.bar', ":#{name}(.foo.bar.baz)"
82
- assert_superselector '.foo', ":#{name}(.foo.bar, .foo.baz)"
83
- end
84
- end
85
-
86
- def test_any_is_not_superselector_of_different_prefix
87
- refute_superselector ':-moz-any(.foo, .bar)', ':-s-any(.foo, .bar)'
88
- end
89
-
90
- def test_not_is_superselector_of_less_complex_not
91
- assert_strict_superselector ':not(.foo.bar)', ':not(.foo)'
92
- assert_strict_superselector ':not(.foo .bar)', ':not(.bar)'
93
- end
94
-
95
- def test_not_is_superselector_of_superset
96
- assert_strict_superselector ':not(.foo.bip, .baz.bang)', ':not(.foo, .bar, .baz)'
97
- assert_strict_superselector ':not(.foo.bip, .baz.bang)', ':not(.foo):not(.bar):not(.baz)'
98
- end
99
-
100
- def test_not_is_superselector_of_unique_selectors
101
- assert_strict_superselector ':not(h1.foo)', 'a'
102
- assert_strict_superselector ':not(.baz #foo)', '#bar'
103
- end
104
-
105
- def test_not_is_not_superselector_of_non_unique_selectors
106
- refute_superselector ':not(.foo)', '.bar'
107
- refute_superselector ':not(:hover)', ':visited'
108
- end
109
-
110
- def test_current_is_superselector_with_identical_innards
111
- assert_superselector ':current(.foo)', ':current(.foo)'
112
- end
113
-
114
- def test_current_is_superselector_with_subselector_innards
115
- refute_superselector ':current(.foo)', ':current(.foo.bar)'
116
- refute_superselector ':current(.foo.bar)', ':current(.foo)'
117
- end
118
-
119
- def test_nth_match_is_superselector_of_subset_nth_match
120
- assert_strict_superselector(
121
- ':nth-child(2n of .foo, .bar, .baz)', '#x:nth-child(2n of .foo.bip, .baz.bang)')
122
- assert_strict_superselector(
123
- ':nth-last-child(2n of .foo, .bar, .baz)', '#x:nth-last-child(2n of .foo.bip, .baz.bang)')
124
- end
125
-
126
- def test_nth_match_is_not_superselector_of_nth_match_with_different_arg
127
- refute_superselector(
128
- ':nth-child(2n of .foo, .bar, .baz)', '#x:nth-child(2n + 1 of .foo.bip, .baz.bang)')
129
- refute_superselector(
130
- ':nth-last-child(2n of .foo, .bar, .baz)', '#x:nth-last-child(2n + 1 of .foo.bip, .baz.bang)')
131
- end
132
-
133
- def test_nth_match_is_not_superselector_of_nth_last_match
134
- refute_superselector ':nth-child(2n of .foo, .bar)', ':nth-last-child(2n of .foo, .bar)'
135
- refute_superselector ':nth-last-child(2n of .foo, .bar)', ':nth-child(2n of .foo, .bar)'
136
- end
137
-
138
- def test_nth_match_can_be_subselector
139
- %w[nth-child nth-last-child].each do |name|
140
- assert_superselector '.foo', ":#{name}(2n of .foo.bar)"
141
- assert_superselector '.foo.bar', ":#{name}(2n of .foo.bar.baz)"
142
- assert_superselector '.foo', ":#{name}(2n of .foo.bar, .foo.baz)"
143
- end
144
- end
145
-
146
- def has_is_superselector_of_subset_host
147
- assert_strict_superselector ':has(.foo, .bar, .baz)', ':has(.foo.bip, .baz.bang)'
148
- end
149
-
150
- def has_isnt_superselector_of_contained_selector
151
- assert_strict_superselector ':has(.foo, .bar, .baz)', '.foo'
152
- end
153
-
154
- def host_is_superselector_of_subset_host
155
- assert_strict_superselector ':host(.foo, .bar, .baz)', ':host(.foo.bip, .baz.bang)'
156
- end
157
-
158
- def host_isnt_superselector_of_contained_selector
159
- assert_strict_superselector ':host(.foo, .bar, .baz)', '.foo'
160
- end
161
-
162
- def host_context_is_superselector_of_subset_host
163
- assert_strict_superselector(
164
- ':host-context(.foo, .bar, .baz)', ':host-context(.foo.bip, .baz.bang)')
165
- end
166
-
167
- def host_context_isnt_superselector_of_contained_selector
168
- assert_strict_superselector ':host-context(.foo, .bar, .baz)', '.foo'
169
- end
170
-
171
- private
172
-
173
- def assert_superselector(superselector, subselector)
174
- assert(parse_selector(superselector).superselector?(parse_selector(subselector)),
175
- "Expected #{superselector} to be a superselector of #{subselector}.")
176
- end
177
-
178
- def refute_superselector(superselector, subselector)
179
- assert(!parse_selector(superselector).superselector?(parse_selector(subselector)),
180
- "Expected #{superselector} not to be a superselector of #{subselector}.")
181
- end
182
-
183
- def assert_strict_superselector(superselector, subselector)
184
- assert_superselector(superselector, subselector)
185
- refute_superselector(subselector, superselector)
186
- end
187
-
188
- def parse_selector(selector)
189
- Sass::SCSS::CssParser.new(selector, filename_for_test, nil).parse_selector
190
- end
191
- end
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../../test_helper'
3
- require 'sass/util/normalized_map'
4
-
5
- class NormalizedMapTest < MiniTest::Test
6
- extend PublicApiLinter
7
-
8
- lint_api Hash, Sass::Util::NormalizedMap
9
-
10
- def lint_instance
11
- Sass::Util::NormalizedMap.new
12
- end
13
-
14
- def test_normalized_map_errors_unless_explicitly_implemented
15
- assert Sass.tests_running
16
- assert_raise_message(ArgumentError, "The method invert must be implemented explicitly") do
17
- Sass::Util::NormalizedMap.new.invert
18
- end
19
- end
20
-
21
- def test_normalized_map_does_not_error_when_released
22
- Sass.tests_running = false
23
- assert_equal({}, Sass::Util::NormalizedMap.new.invert)
24
- ensure
25
- Sass.tests_running = true
26
- end
27
-
28
- def test_basic_lifecycle
29
- m = Sass::Util::NormalizedMap.new
30
- m["a-b"] = 1
31
- assert_equal ["a_b"], m.keys
32
- assert_equal 1, m["a_b"]
33
- assert_equal 1, m["a-b"]
34
- assert m.has_key?("a_b")
35
- assert m.has_key?("a-b")
36
- assert_equal({"a-b" => 1}, m.as_stored)
37
- assert_equal 1, m.delete("a-b")
38
- assert !m.has_key?("a-b")
39
- m["a_b"] = 2
40
- assert_equal({"a_b" => 2}, m.as_stored)
41
- end
42
-
43
- def test_dup
44
- m = Sass::Util::NormalizedMap.new
45
- m["a-b"] = 1
46
- m2 = m.dup
47
- m.delete("a-b")
48
- assert !m.has_key?("a-b")
49
- assert m2.has_key?("a-b")
50
- end
51
- end
@@ -1,179 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
-
4
- class ValueHelpersTest < MiniTest::Test
5
- include Sass::Script
6
- include Sass::Script::Value::Helpers
7
-
8
- def test_bool
9
- assert_same Value::Bool::TRUE, bool(true)
10
- assert_same Value::Bool::FALSE, bool(false)
11
- assert_same Value::Bool::FALSE, bool(nil)
12
- assert_same Value::Bool::TRUE, bool(Object.new)
13
- end
14
-
15
- def test_hex_color_with_three_digits
16
- color = hex_color("F07")
17
- assert_equal 255, color.red
18
- assert_equal 0, color.green
19
- assert_equal 119, color.blue
20
- assert_equal 1, color.alpha
21
- end
22
-
23
- def test_hex_color_without_hash
24
- color_without_hash = hex_color("FF007F")
25
- assert_equal 255, color_without_hash.red
26
- assert_equal 0, color_without_hash.green
27
- assert_equal 127, color_without_hash.blue
28
- assert_equal 1, color_without_hash.alpha
29
- end
30
-
31
- def test_hex_color_with_hash
32
- color_with_hash = hex_color("#FF007F")
33
- assert_equal 255, color_with_hash.red
34
- assert_equal 0, color_with_hash.green
35
- assert_equal 127, color_with_hash.blue
36
- assert_equal 1, color_with_hash.alpha
37
- end
38
-
39
- def test_malformed_hex_color
40
- assert_raises ArgumentError do
41
- hex_color("green")
42
- end
43
- assert_raises ArgumentError do
44
- hex_color("#abcd")
45
- end
46
- end
47
-
48
-
49
- def test_hex_color_with_alpha
50
- color_with_alpha = hex_color("FF007F", 0.5)
51
- assert_equal 0.5, color_with_alpha.alpha
52
- end
53
-
54
- def test_hex_color_alpha_clamps_0_to_1
55
- assert_equal 1, hex_color("FF007F", 50).alpha
56
- end
57
-
58
- def test_hsl_color_without_alpha
59
- no_alpha = hsl_color(1, 0.5, 1)
60
- assert_equal 1, no_alpha.hue
61
- assert_equal 0.5, no_alpha.saturation
62
- assert_equal 1, no_alpha.lightness
63
- assert_equal 1, no_alpha.alpha
64
- end
65
-
66
- def test_hsl_color_with_alpha
67
- has_alpha = hsl_color(1, 0.5, 1, 0.5)
68
- assert_equal 1, has_alpha.hue
69
- assert_equal 0.5, has_alpha.saturation
70
- assert_equal 1, has_alpha.lightness
71
- assert_equal 0.5, has_alpha.alpha
72
- end
73
-
74
- def test_rgb_color_without_alpha
75
- no_alpha = rgb_color(255, 0, 0)
76
- assert_equal 255, no_alpha.red
77
- assert_equal 0, no_alpha.green
78
- assert_equal 0, no_alpha.blue
79
- assert_equal 1, no_alpha.alpha
80
- end
81
-
82
- def test_rgb_color_with_alpha
83
- has_alpha = rgb_color(255, 255, 255, 0.5)
84
- assert_equal 255, has_alpha.red
85
- assert_equal 255, has_alpha.green
86
- assert_equal 255, has_alpha.blue
87
- assert_equal 0.5, has_alpha.alpha
88
- end
89
-
90
- def test_number
91
- n = number(1)
92
- assert_equal 1, n.value
93
- assert_equal "1", n.to_sass
94
- end
95
-
96
- def test_number_with_single_unit
97
- n = number(1, "px")
98
- assert_equal 1, n.value
99
- assert_equal "1px", n.to_sass
100
- end
101
-
102
- def test_number_with_singal_numerator_and_denominator
103
- ratio = number(1, "px/em")
104
- assert_equal "1px/em", ratio.to_sass
105
- end
106
-
107
- def test_number_with_many_numerator_and_denominator_units
108
- complex = number(1, "px*in/em*%")
109
- assert_equal "1in*px/%*em", complex.to_sass
110
- end
111
-
112
- def test_number_with_many_numerator_and_denominator_units_with_spaces
113
- complex = number(1, "px * in / em * %")
114
- assert_equal "1in*px/%*em", complex.to_sass
115
- end
116
-
117
- def test_number_with_malformed_units
118
- assert_raises ArgumentError do
119
- number(1, "px/em/%")
120
- end
121
- assert_raises ArgumentError do
122
- number(1, "/")
123
- end
124
- assert_raises ArgumentError do
125
- number(1, "px/")
126
- end
127
- end
128
-
129
- def test_space_list
130
- l = list(number(1, "px"), hex_color("#f71"), :space)
131
- l.options = {}
132
- assert_kind_of Sass::Script::Value::List, l
133
- assert_equal "1px #f71", l.to_sass
134
- end
135
-
136
- def test_comma_list
137
- l = list(number(1, "px"), hex_color("#f71"), :comma)
138
- l.options = {}
139
- assert_kind_of Sass::Script::Value::List, l
140
- assert_equal "1px, #f71", l.to_sass
141
- end
142
-
143
- def test_missing_list_type
144
- assert_raises ArgumentError do
145
- list(number(1, "px"), hex_color("#f71"))
146
- end
147
- end
148
-
149
- def test_null
150
- assert_kind_of Sass::Script::Value::Null, null
151
- end
152
-
153
- def test_quoted_string
154
- s = quoted_string("sassy string")
155
- s.options = {}
156
- assert_kind_of Sass::Script::Value::String, s
157
- assert_equal "sassy string", s.value
158
- assert_equal :string, s.type
159
- assert_equal '"sassy string"', s.to_sass
160
- end
161
-
162
- def test_identifier
163
- s = identifier("a-sass-ident")
164
- s.options = {}
165
- assert_kind_of Sass::Script::Value::String, s
166
- assert_equal "a-sass-ident", s.value
167
- assert_equal :identifier, s.type
168
- assert_equal "a-sass-ident", s.to_sass
169
- end
170
-
171
- def test_unquoted_string
172
- s = unquoted_string("a-sass-ident")
173
- s.options = {}
174
- assert_kind_of Sass::Script::Value::String, s
175
- assert_equal "a-sass-ident", s.value
176
- assert_equal :identifier, s.type
177
- assert_equal "a-sass-ident", s.to_sass
178
- end
179
- end