livetext 0.9.30 → 0.9.31

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,44 @@
1
+ Single bracketed item
2
+ "*[abc]"
3
+ "<b>abc</b>"
4
+ --------------------------------
5
+ End of line can replace bracket
6
+ "*[abc"
7
+ "<b>abc</b>"
8
+ --------------------------------
9
+ End of line can replace bracket again
10
+ "abc *[d"
11
+ "abc <b>d</b>"
12
+ --------------------------------
13
+ Missing right bracket ignored at eol if empty
14
+ "abc*["
15
+ "abc*["
16
+ --------------------------------
17
+ Two simple bracketed items
18
+ "*[A], *[B], C"
19
+ "<b>A</b>, <b>B</b>, C"
20
+ --------------------------------
21
+ Simple bracketed item
22
+ "Just a *[test]..."
23
+ "Just a <b>test</b>..."
24
+ --------------------------------
25
+ Bracketed item with space
26
+ "A *[simple test]"
27
+ "A <b>simple test</b>"
28
+ --------------------------------
29
+ Empty bracketed item results in null
30
+ " *[] "
31
+ " "
32
+ --------------------------------
33
+ Bracketed item with space again
34
+ "*[ab c] d"
35
+ "<b>ab c</b> d"
36
+ --------------------------------
37
+ Two bracketed items with spaces
38
+ "*[a b] *[c d]"
39
+ "<b>a b</b> <b>c d</b>"
40
+ --------------------------------
41
+ Solitary item, missing right bracket ignored at eol if empty
42
+ "*["
43
+ ""
44
+ --------------------------------
@@ -0,0 +1,121 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'livetext'
4
+
5
+ # Just another testing class. Chill.
6
+
7
+ class TestingLivetextDouble < MiniTest::Test
8
+
9
+ def setup
10
+ @live = Livetext.new
11
+ end
12
+
13
+ def check_match(exp, actual)
14
+ if exp.is_a? Regexp
15
+ assert_match(exp, actual, "actual does not match expected")
16
+ else
17
+ assert_equal(exp, actual, "actual != expected")
18
+ end
19
+ end
20
+
21
+ def test_double_001_double_marker_plus_end_of_line
22
+ # Double marker plus end of line
23
+ # No special initialization
24
+ src = "**abc"
25
+ exp = "<b>abc</b>"
26
+ actual = @live.api.format(src)
27
+ check_match(exp, actual)
28
+ end
29
+
30
+ def test_double_002_embedded_double_marker_is_ignored
31
+ # Embedded double marker is ignored
32
+ # No special initialization
33
+ src = "abc**d"
34
+ exp = "abc**d"
35
+ actual = @live.api.format(src)
36
+ check_match(exp, actual)
37
+ end
38
+
39
+ def test_double_003_double_marker_at_end_of_line_is_ignored
40
+ # Double marker at end of line is ignored
41
+ # No special initialization
42
+ src = "abc**"
43
+ exp = "abc**"
44
+ actual = @live.api.format(src)
45
+ check_match(exp, actual)
46
+ end
47
+
48
+ def test_double_004_two_valid_double_markers
49
+ # Two valid double markers
50
+ # No special initialization
51
+ src = "**A, **B, C"
52
+ exp = "<b>A</b>, <b>B</b>, C"
53
+ actual = @live.api.format(src)
54
+ check_match(exp, actual)
55
+ end
56
+
57
+ def test_double_005_one_valid_double_marker
58
+ # One valid double marker
59
+ # No special initialization
60
+ src = "Just a **test..."
61
+ exp = "Just a <b>test</b>..."
62
+ actual = @live.api.format(src)
63
+ check_match(exp, actual)
64
+ end
65
+
66
+ def test_double_006_double_marker_by_itself_is_ignored
67
+ # Double marker by itself is ignored
68
+ # No special initialization
69
+ src = " ** "
70
+ exp = " ** "
71
+ actual = @live.api.format(src)
72
+ check_match(exp, actual)
73
+ end
74
+
75
+ def test_double_007_double_marker_terminated_by_comma_period_end_of_line
76
+ # Double marker terminated by comma, period, end of line
77
+ # No special initialization
78
+ src = "**ab, **c. d **e"
79
+ exp = "<b>ab</b>, <b>c</b>. d <b>e</b>"
80
+ actual = @live.api.format(src)
81
+ check_match(exp, actual)
82
+ end
83
+
84
+ def test_double_008_embedded_double_markers_are_ignored
85
+ # Embedded double markers are ignored
86
+ # No special initialization
87
+ src = "x**y**z"
88
+ exp = "x**y**z"
89
+ actual = @live.api.format(src)
90
+ check_match(exp, actual)
91
+ end
92
+
93
+ def test_double_009_double_markers_terminated_by_space_or_end_of_line
94
+ # Double markers terminated by space or end of line
95
+ # No special initialization
96
+ src = "**a **b"
97
+ exp = "<b>a</b> <b>b</b>"
98
+ actual = @live.api.format(src)
99
+ check_match(exp, actual)
100
+ end
101
+
102
+ def test_double_010_single_valid_double_marker
103
+ # Single valid double marker
104
+ # No special initialization
105
+ src = "**A"
106
+ exp = "<b>A</b>"
107
+ actual = @live.api.format(src)
108
+ check_match(exp, actual)
109
+ end
110
+
111
+ def test_double_011_double_marker_by_itself_is_ignored
112
+ # Double marker by itself is ignored
113
+ # No special initialization
114
+ src = "**"
115
+ exp = "**"
116
+ actual = @live.api.format(src)
117
+ check_match(exp, actual)
118
+ end
119
+
120
+
121
+ end
@@ -0,0 +1,44 @@
1
+ Double marker plus end of line
2
+ "**abc"
3
+ "<b>abc</b>"
4
+ -----------------------------------
5
+ Embedded double marker is ignored
6
+ "abc**d"
7
+ "abc**d"
8
+ -----------------------------------
9
+ Double marker at end of line is ignored
10
+ "abc**"
11
+ "abc**"
12
+ -----------------------------------
13
+ Two valid double markers
14
+ "**A, **B, C"
15
+ "<b>A</b>, <b>B</b>, C"
16
+ -----------------------------------
17
+ One valid double marker
18
+ "Just a **test..."
19
+ "Just a <b>test</b>..."
20
+ -----------------------------------
21
+ Double marker by itself is ignored
22
+ " ** "
23
+ " ** "
24
+ -----------------------------------
25
+ Double marker terminated by comma, period, end of line
26
+ "**ab, **c. d **e"
27
+ "<b>ab</b>, <b>c</b>. d <b>e</b>"
28
+ -----------------------------------
29
+ Embedded double markers are ignored
30
+ "x**y**z"
31
+ "x**y**z"
32
+ -----------------------------------
33
+ Double markers terminated by space or end of line
34
+ "**a **b"
35
+ "<b>a</b> <b>b</b>"
36
+ -----------------------------------
37
+ Single valid double marker
38
+ "**A"
39
+ "<b>A</b>"
40
+ -----------------------------------
41
+ Double marker by itself is ignored
42
+ "**"
43
+ "**"
44
+ -----------------------------------
@@ -0,0 +1,148 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'livetext'
4
+
5
+ # Just another testing class. Chill.
6
+
7
+ class TestingLivetextFunctions < MiniTest::Test
8
+
9
+ def setup
10
+ @live = Livetext.new
11
+ end
12
+
13
+ def check_match(exp, actual)
14
+ if exp.is_a? Regexp
15
+ assert_match(exp, actual, "actual does not match expected")
16
+ else
17
+ assert_equal(exp, actual, "actual != expected")
18
+ end
19
+ end
20
+
21
+ def test_functions_001_simple_function_call
22
+ # Simple function call
23
+ # No special initialization
24
+ src = "Today is $$date"
25
+ exp = /Today is [[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}/
26
+ actual = @live.api.format(src)
27
+ check_match(exp, actual)
28
+ end
29
+
30
+ def test_functions_002_function_call_with_colon_parameter
31
+ # Function call with colon parameter
32
+ # No special initialization
33
+ src = "Square root of 225 is $$isqrt:225"
34
+ exp = /is 15$/
35
+ actual = @live.api.format(src)
36
+ check_match(exp, actual)
37
+ end
38
+
39
+ def test_functions_003_function_call_with_empty_colon_parameter
40
+ # Function call with empty colon parameter
41
+ # No special initialization
42
+ src = "Calculate $$isqrt:"
43
+ exp = /Error evaluating/
44
+ actual = @live.api.format(src)
45
+ check_match(exp, actual)
46
+ end
47
+
48
+ def test_functions_004_function_call_with_empty_bracket_parameter
49
+ # Function call with empty bracket parameter
50
+ # No special initialization
51
+ src = "Calculate $$isqrt[]"
52
+ exp = /Error evaluating/
53
+ actual = @live.api.format(src)
54
+ check_match(exp, actual)
55
+ end
56
+
57
+ def test_functions_005_function_detects_invalid_bracket_parameter
58
+ # Function detects invalid bracket parameter
59
+ # No special initialization
60
+ src = "Calculate $$isqrt[3a5]"
61
+ exp = /Error evaluating/
62
+ actual = @live.api.format(src)
63
+ check_match(exp, actual)
64
+ end
65
+
66
+ def test_functions_006_function_call_followed_by_comma
67
+ # Function call followed by comma
68
+ # No special initialization
69
+ src = "Today is $$date, I think"
70
+ exp = /Today is [[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}, I think/
71
+ actual = @live.api.format(src)
72
+ check_match(exp, actual)
73
+ end
74
+
75
+ def test_functions_007_undefined_function
76
+ # Undefined function
77
+ # No special initialization
78
+ src = "I am calling an $$unknown.function here"
79
+ exp = /evaluating/
80
+ actual = @live.api.format(src)
81
+ check_match(exp, actual)
82
+ end
83
+
84
+ def test_functions_008_functions_date_time_pwd
85
+ # Functions date, time, pwd
86
+ # No special initialization
87
+ src = "Today is $$date at $$time, and I am in $$pwd"
88
+ exp = /Today is [[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} at [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}, and I am in (\/[[:alnum:]]+)+\/?/
89
+ actual = @live.api.format(src)
90
+ check_match(exp, actual)
91
+ end
92
+
93
+ def test_functions_009_function_detects_missing_parameter
94
+ # Function detects missing parameter
95
+ # No special initialization
96
+ src = "Here I call $$reverse with no parameters"
97
+ exp = "Here I call (reverse: No parameter) with no parameters"
98
+ actual = @live.api.format(src)
99
+ check_match(exp, actual)
100
+ end
101
+
102
+ def test_functions_010_simple_function_test
103
+ # Simple function test
104
+ # No special initialization
105
+ src = "'animal' spelled backwards is '$$reverse[animal]'"
106
+ exp = "'animal' spelled backwards is 'lamina'"
107
+ actual = @live.api.format(src)
108
+ check_match(exp, actual)
109
+ end
110
+
111
+ def test_functions_011_simple_function_with_colon_parameter
112
+ # Simple function with colon parameter
113
+ # No special initialization
114
+ src = "'lamina' spelled backwards is $$reverse:lamina"
115
+ exp = "'lamina' spelled backwards is animal"
116
+ actual = @live.api.format(src)
117
+ check_match(exp, actual)
118
+ end
119
+
120
+ def test_functions_012_variable_inside_function_bracket_parameter
121
+ # Variable inside function bracket parameter
122
+ @live.api.setvar(:whatever, "some var value")
123
+ src = "$whatever backwards is $$reverse[$whatever]"
124
+ exp = "some var value backwards is eulav rav emos"
125
+ actual = @live.api.format(src)
126
+ check_match(exp, actual)
127
+ end
128
+
129
+ def test_functions_013_function_with_variable_in_colon_param_is_nonhygienic
130
+ # Function with variable in colon param is nonhygienic
131
+ @live.api.setvar(:whatever, "some var value")
132
+ src = "Like non-hygienic macros: $whatever backwards != $$reverse:$whatever"
133
+ exp = "Like non-hygienic macros: some var value backwards != emos var value"
134
+ actual = @live.api.format(src)
135
+ check_match(exp, actual)
136
+ end
137
+
138
+ def test_functions_014_function_call_with_variable_in_bracket_param
139
+ # Function call with variable in bracket param
140
+ # No special initialization
141
+ src = "User $User backwards is $$reverse[$User]"
142
+ exp = /User [[:alnum:]]+ backwards is [[:alnum:]]+$/
143
+ actual = @live.api.format(src)
144
+ check_match(exp, actual)
145
+ end
146
+
147
+
148
+ end
@@ -0,0 +1,58 @@
1
+ Simple function call
2
+ "Today is $$date"
3
+ /Today is RX_DATE/
4
+ -------------------------------------------------
5
+ Function call with colon parameter
6
+ "Square root of 225 is $$isqrt:225"
7
+ /is 15$/
8
+ -------------------------------------------------
9
+ Function call with empty colon parameter
10
+ "Calculate $$isqrt:"
11
+ /Error evaluating/
12
+ -------------------------------------------------
13
+ Function call with empty bracket parameter
14
+ "Calculate $$isqrt[]"
15
+ /Error evaluating/
16
+ -------------------------------------------------
17
+ Function detects invalid bracket parameter
18
+ "Calculate $$isqrt[3a5]"
19
+ /Error evaluating/
20
+ -------------------------------------------------
21
+ Function call followed by comma
22
+ "Today is $$date, I think"
23
+ /Today is RX_DATE, I think/
24
+ -------------------------------------------------
25
+ Undefined function
26
+ "I am calling an $$unknown.function here"
27
+ /evaluating/
28
+ -------------------------------------------------
29
+ Functions date, time, pwd
30
+ "Today is $$date at $$time, and I am in $$pwd"
31
+ /Today is RX_DATE at RX_TIME, and I am in RX_PATH/
32
+ -------------------------------------------------
33
+ Function detects missing parameter
34
+ "Here I call $$reverse with no parameters"
35
+ "Here I call (reverse: No parameter) with no parameters"
36
+ -------------------------------------------------
37
+ Simple function test
38
+ "'animal' spelled backwards is '$$reverse[animal]'"
39
+ "'animal' spelled backwards is 'lamina'"
40
+ -------------------------------------------------
41
+ Simple function with colon parameter
42
+ "'lamina' spelled backwards is $$reverse:lamina"
43
+ "'lamina' spelled backwards is animal"
44
+ -------------------------------------------------
45
+ Variable inside function bracket parameter
46
+ init: @live.api.setvar(:whatever, "some var value")
47
+ "$whatever backwards is $$reverse[$whatever]"
48
+ "some var value backwards is eulav rav emos"
49
+ -------------------------------------------------
50
+ Function with variable in colon param is nonhygienic
51
+ init: @live.api.setvar(:whatever, "some var value")
52
+ "Like non-hygienic macros: $whatever backwards != $$reverse:$whatever"
53
+ "Like non-hygienic macros: some var value backwards != emos var value"
54
+ -------------------------------------------------
55
+ Function call with variable in bracket param
56
+ "User $User backwards is $$reverse[$User]"
57
+ /User RX_USER backwards is RX_USER$/
58
+ -------------------------------------------------
@@ -0,0 +1,139 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'livetext'
4
+
5
+ # Just another testing class. Chill.
6
+
7
+ class TestingLivetextSingle < MiniTest::Test
8
+
9
+ def setup
10
+ @live = Livetext.new
11
+ end
12
+
13
+ def check_match(exp, actual)
14
+ if exp.is_a? Regexp
15
+ assert_match(exp, actual, "actual does not match expected")
16
+ else
17
+ assert_equal(exp, actual, "actual != expected")
18
+ end
19
+ end
20
+
21
+ def test_single_001_no_marker_at_all
22
+ # No marker at all
23
+ # No special initialization
24
+ src = "abc"
25
+ exp = "abc"
26
+ actual = @live.api.format(src)
27
+ check_match(exp, actual)
28
+ end
29
+
30
+ def test_single_002_single_marker_at_front
31
+ # Single marker at front
32
+ # No special initialization
33
+ src = "*abc"
34
+ exp = "<b>abc</b>"
35
+ actual = @live.api.format(src)
36
+ check_match(exp, actual)
37
+ end
38
+
39
+ def test_single_003_embedded_marker_is_ignored
40
+ # Embedded marker is ignored
41
+ # No special initialization
42
+ src = "abc*d"
43
+ exp = "abc*d"
44
+ actual = @live.api.format(src)
45
+ check_match(exp, actual)
46
+ end
47
+
48
+ def test_single_004_trailing_marker_is_ignored
49
+ # Trailing marker is ignored
50
+ # No special initialization
51
+ src = "abc*"
52
+ exp = "abc*"
53
+ actual = @live.api.format(src)
54
+ check_match(exp, actual)
55
+ end
56
+
57
+ def test_single_005_two_valid_markers
58
+ # Two valid markers
59
+ # No special initialization
60
+ src = "*A *B C"
61
+ exp = "<b>A</b> <b>B</b> C"
62
+ actual = @live.api.format(src)
63
+ check_match(exp, actual)
64
+ end
65
+
66
+ def test_single_006_one_valid_marker
67
+ # One valid marker
68
+ # No special initialization
69
+ src = "Just a little *test here"
70
+ exp = "Just a little <b>test</b> here"
71
+ actual = @live.api.format(src)
72
+ check_match(exp, actual)
73
+ end
74
+
75
+ def test_single_007_marker_surrounded_by_spaces_is_ignored
76
+ # Marker surrounded by spaces is ignored
77
+ # No special initialization
78
+ src = " * "
79
+ exp = " * "
80
+ actual = @live.api.format(src)
81
+ check_match(exp, actual)
82
+ end
83
+
84
+ def test_single_008_multiple_valid_markers
85
+ # Multiple valid markers
86
+ # No special initialization
87
+ src = "*abc *d ef *gh i"
88
+ exp = "<b>abc</b> <b>d</b> ef <b>gh</b> i"
89
+ actual = @live.api.format(src)
90
+ check_match(exp, actual)
91
+ end
92
+
93
+ def test_single_009_valid_markers_are_ignored
94
+ # Valid markers are ignored
95
+ # No special initialization
96
+ src = "x*y*z"
97
+ exp = "x*y*z"
98
+ actual = @live.api.format(src)
99
+ check_match(exp, actual)
100
+ end
101
+
102
+ def test_single_010_valid_markers_at_start_end_of_string
103
+ # Valid markers at start+end of string
104
+ # No special initialization
105
+ src = "*a *b"
106
+ exp = "<b>a</b> <b>b</b>"
107
+ actual = @live.api.format(src)
108
+ check_match(exp, actual)
109
+ end
110
+
111
+ def test_single_011_marker_by_itself_on_line_is_ignored
112
+ # Marker by itself on line is ignored
113
+ # No special initialization
114
+ src = "*"
115
+ exp = "*"
116
+ actual = @live.api.format(src)
117
+ check_match(exp, actual)
118
+ end
119
+
120
+ def test_single_012_marker_at_end_unaffected_by_newline
121
+ # Marker at end unaffected by newline
122
+ # No special initialization
123
+ src = "This is *bold\n"
124
+ exp = "This is <b>bold</b>"
125
+ actual = @live.api.format(src)
126
+ check_match(exp, actual)
127
+ end
128
+
129
+ def test_single_013_escaped_marker_is_ignored
130
+ # Escaped marker is ignored
131
+ # No special initialization
132
+ src = "\\\\*escaped"
133
+ exp = "*escaped"
134
+ actual = @live.api.format(src)
135
+ check_match(exp, actual)
136
+ end
137
+
138
+
139
+ end
@@ -0,0 +1,52 @@
1
+ No marker at all
2
+ "abc"
3
+ "abc"
4
+ ------------------------------------
5
+ Single marker at front
6
+ "*abc"
7
+ "<b>abc</b>"
8
+ ------------------------------------
9
+ Embedded marker is ignored
10
+ "abc*d"
11
+ "abc*d"
12
+ ------------------------------------
13
+ Trailing marker is ignored
14
+ "abc*"
15
+ "abc*"
16
+ ------------------------------------
17
+ Two valid markers
18
+ "*A *B C"
19
+ "<b>A</b> <b>B</b> C"
20
+ ------------------------------------
21
+ One valid marker
22
+ "Just a little *test here"
23
+ "Just a little <b>test</b> here"
24
+ ------------------------------------
25
+ Marker surrounded by spaces is ignored
26
+ " * "
27
+ " * "
28
+ ------------------------------------
29
+ Multiple valid markers
30
+ "*abc *d ef *gh i"
31
+ "<b>abc</b> <b>d</b> ef <b>gh</b> i"
32
+ ------------------------------------
33
+ Valid markers are ignored
34
+ "x*y*z"
35
+ "x*y*z"
36
+ ------------------------------------
37
+ Valid markers at start+end of string
38
+ "*a *b"
39
+ "<b>a</b> <b>b</b>"
40
+ ------------------------------------
41
+ Marker by itself on line is ignored
42
+ "*"
43
+ "*"
44
+ ------------------------------------
45
+ Marker at end unaffected by newline
46
+ "This is *bold\n"
47
+ "This is <b>bold</b>"
48
+ ------------------------------------
49
+ Escaped marker is ignored
50
+ "\\*escaped"
51
+ "*escaped"
52
+ ------------------------------------