summaryrefslogtreecommitdiff
path: root/extensions/ParserFunctions/convertTests.txt
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/ParserFunctions/convertTests.txt')
-rw-r--r--extensions/ParserFunctions/convertTests.txt231
1 files changed, 231 insertions, 0 deletions
diff --git a/extensions/ParserFunctions/convertTests.txt b/extensions/ParserFunctions/convertTests.txt
new file mode 100644
index 00000000..dc09c45a
--- /dev/null
+++ b/extensions/ParserFunctions/convertTests.txt
@@ -0,0 +1,231 @@
+!! functionhooks
+convert
+!! endfunctionhooks
+
+!! test
+Simple conversion
+!! input
+{{#convert: 10 m | km }}
+!!result
+<p>0.01 kilometres
+</p>
+!! end
+
+!! test
+Position and formatting of numbers and units
+!! input
+*{{#convert: 10 m | km }}
+*{{#convert: 10m | km }}
+*{{#convert: 10 km | m }}
+*{{#convert: 10-km | m }}
+*{{#convert: 10E2 km | m }}
+*{{#convert: 10E-2 km | m }}
+*{{#convert: 10.0E2 km | m }}
+*{{#convert: 10.0E2.5 km | m }}
+!! result
+<ul><li>0.01 kilometres
+</li><li>0.01kilometres
+</li><li>10,000 metres
+</li><li>10,000-metres
+</li><li>1,000,000 metres
+</li><li>100 metres
+</li><li>1,000,000 metres
+</li><li>1,000,000.5,000 metres
+</li></ul>
+
+!! end
+
+!! test
+Precision 1
+!! input
+*{{#convert: 10 m | km }}
+*{{#convert: 11 m | km }}
+*{{#convert: 12 m | km }}
+*{{#convert: 13 m | km }}
+*{{#convert: 14 m | km }}
+*{{#convert: 15 m | km }}
+*{{#convert: 16 m | km }}
+*{{#convert: 17 m | km }}
+*{{#convert: 18 m | km }}
+*{{#convert: 19 m | km }}
+*{{#convert: 20 m | km }}
+!! result
+<ul><li>0.01 kilometres
+</li><li>0.011 kilometres
+</li><li>0.012 kilometres
+</li><li>0.013 kilometres
+</li><li>0.014 kilometres
+</li><li>0.015 kilometres
+</li><li>0.016 kilometres
+</li><li>0.017 kilometres
+</li><li>0.018 kilometres
+</li><li>0.019 kilometres
+</li><li>0.02 kilometres
+</li></ul>
+
+!! end
+
+!! test
+Precision 2
+!! input
+*{{#convert: 10.0 m | km }}
+*{{#convert: 10.1 m | km }}
+*{{#convert: 10.2 m | km }}
+*{{#convert: 10.3 m | km }}
+*{{#convert: 10.4 m | km }}
+*{{#convert: 10.5 m | km }}
+*{{#convert: 10.6 m | km }}
+*{{#convert: 10.7 m | km }}
+!! result
+<ul><li>0.0100 kilometres
+</li><li>0.0101 kilometres
+</li><li>0.0102 kilometres
+</li><li>0.0103 kilometres
+</li><li>0.0104 kilometres
+</li><li>0.0105 kilometres
+</li><li>0.0106 kilometres
+</li><li>0.0107 kilometres
+</li></ul>
+
+!! end
+
+!! test
+String interpolation
+!! input
+{{#convert: 25, 26, 27, 28, 29, and 30 km }}
+!! result
+<p>25,000, 26,000, 27,000, 28,000, 29,000, and 30,000 metres
+</p>
+!! end
+
+!! test
+Precision 3
+!! input
+{{#convert: 25, 26, 27, 28, 29, and 30 miles }}
+!! result
+<p>40,000, 42,000, 43,000, 45,000, 47,000, and 50,000 metres
+</p>
+!! end
+
+!! test
+Precision 4
+!! input
+{{#convert:35000, 35E3, 35.0E3, 350E2, 3.500E4, 35000E0, 350000E-1 m | km }}
+!! result
+<p>35, 35, 35.0, 35, 35.00, 35, 35 kilometres
+</p>
+!! end
+
+!! test
+#sourceunit
+!!input
+*{{#convert: 25 | #sourceunit = km }}
+*{{#convert: 25 | #sourceunit=km }}
+*{{#convert: 25 | #sourceunit = km | #sourceunit = mm }}
+*{{#convert: 25 | #sourceunit = km | cm }}
+!! result
+<ul><li>25,000 metres
+</li><li>25,000 metres
+</li><li>0.025 metres
+</li><li>2,500,000 centimetres
+</li></ul>
+
+!! end
+
+!! test
+Precision overrides
+!!input
+*{{#convert: 1 mi | #dp = 0 }}
+*{{#convert: 1 mi | #dp=1 }}
+*{{#convert: 1 mi | #dp = -2 }}
+*{{#convert: 1 mi | #dp = 5 }}
+*{{#convert: 1 mi | #dp = -8 }}
+*{{#convert: 1 mi | #sf = 0 }}
+*{{#convert: 1 mi | #sf=1 }}
+*{{#convert: 1 mi | #sf = 3 }}
+*{{#convert: 1 mi | #sf = 5 }}
+*{{#convert: 1 mi | #sf = -8 }}
+!! result
+<ul><li>1,609 metres
+</li><li>1,609.3 metres
+</li><li>1,600 metres
+</li><li>1,609.344 metres
+</li><li>0 metres
+</li><li>2,000 metres
+</li><li>2,000 metres
+</li><li>1,610 metres
+</li><li>1,609.3 metres
+</li><li>2,000 metres
+</li></ul>
+
+!! end
+
+
+!! test
+Errors
+!! input
+*{{#convert: 25 | km }}
+*{{#convert: 25 foobars | mi }}
+*{{#convert: 25 mi | #sourceunit = foobar }}
+*{{#convert: 25 km | s }}
+*{{#convert: 25 km/Pa | m/Pa }}
+*{{#convert: 25 km/s/l }}
+*{{#convert: 25 km/m3 }}
+!! result
+<ul><li><strong class="error">Error: no source unit given</strong>
+</li><li><strong class="error">Error: unknown unit "foobars"</strong>
+</li><li><strong class="error">Error: unknown unit "foobar"</strong>
+</li><li><strong class="error">Error: cannot convert between units of "length" and "time"</strong>
+</li><li><strong class="error">Error: invalid compound unit "length/pressure"</strong>
+</li><li><strong class="error">Error: cannot parse double compound units like "km/s/l"</strong>
+</li><li><strong class="error">Error: invalid compound unit "length/volume"</strong>
+</li></ul>
+
+!! end
+
+
+!! test
+#sourceunit = #targetunit
+!! input
+*{{#convert: 25 km | #targetunit = #sourceunit }}
+*{{#convert: 25 km | #sourceunit = #targetunit }}
+!! result
+<ul><li>25 kilometres
+</li><li>25 kilometres
+</li></ul>
+
+!! end
+
+!! test
+#language
+!! input
+*{{#convert: 10 m | km | #language=en-gb }}
+*{{#convert: 10m | km | #language = en }}
+*{{#convert: 10 km | m |#language=en}}
+*{{#convert: 10 Pa | mmHg | #language = fr }}
+!! result
+<ul><li>0.01 kilometres
+</li><li>0.01kilometers
+</li><li>10,000 meters
+</li><li>0.1 millimètre de mercure
+</li></ul>
+
+!! end
+
+!! test
+Case sensitivity
+!! input
+*{{#convert: 10 mm | m }}
+*{{#convert: 10 Mm | m }}
+*{{#convert: 10 km | Mm }}
+*{{#convert: 10 Pa | mmHg }}
+*{{#convert: 10 pa | mmHg }}
+!! result
+<ul><li>0.01 metres
+</li><li>10,000,000 metres
+</li><li>0.01 megametres
+</li><li>0.1 millimetres of mercury
+</li><li><strong class="error">Error: unknown unit "pa"</strong>
+</li></ul>
+
+!! end