Sjabloon:Val/testcases

Uit informatiestandaarden
Naar navigatie springen Naar zoeken springen

This is the page of testcases for: Template:Val.

Overview

The testcases, listed below, are intended to show the working options for Template:Val, and for its experimental variation Template:Val/sandbox (to develop new options). The variety of testcases is intended to be a broad sample of all possible options, so as to better catch any mistakes introduced during updates.

Live testcases for Template:Val

Here are some tests to see if {{val}} works correctly:

  • {{val|1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|2}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|(2)}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|2|-3}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|e=1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|e=-1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=X}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|p=Δ |12.34|s=%}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|p=Δ |1245.6789|12345|-12345|e=12345|u=kg|s=%}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}

Various ways of displaying units with/without links:

  • {{val|1|u=m/s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=m*s-1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=m|up=s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|ul=m/s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|ul=m*s-1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|ul=m|up=s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=m|upl=s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|ul=m|upl=s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}

Tests for grouping digits:

  • {{val|12}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|123}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1234}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|123456}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1234567}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345678}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|123456789}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1234567890}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345678901}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|123456789012}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1234567890123}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345678901234}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|123456789012345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-12}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-123}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-1234}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-123456}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-1234567}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-12345678}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-123456789}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-1234567890}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-12345678901}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-123456789012}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-1234567890123}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-12345678901234}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|-123456789012345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.2}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.23}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.234}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.2345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.23456}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.234567}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.2345678}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.23456789}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.234567890}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.2345678901}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.23456789012}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.234567890123}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.2345678901234}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1.23456789012345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}

Formatting large numbers:

  • {{val|12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345|12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345|(12345)}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345|12345|-12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345|e=12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345|e=-12345}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|12345|u=Non-existing unit}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|p=prefix|12345|s=suffix}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}

Error messages:

  • {{val}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|A|B|C}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|B|C}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|1|C}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|1|1}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|e=A}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|up=s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|upl=s}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=|up=}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=m|ul=m}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
  • {{val|1|u=m|up=m|upl=m}} = {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}

Testcases for /sandbox version

The following testcases show how {{val/sandbox}} works:

Various ways of displaying units with/without links:

Tests for grouping digits:

Formatting large numbers:

Error messages:

Multiple error messages

10-Dec-2010: The Template:Val has been performing too many nested if-else-if-else checks on parameters, and has been nested over 20 deep (of the tiny 40-level "Expansion depth limit" in MediaWiki 1.6), before Val processes all decimal digits, nesting 1 level deeper for each digit after 4. This nesting is reduced by checking each validation of parameters as non-nested simple if-then logic (not if-else logic). By contrast, Template:Gaps nests only 2 levels deep (for {gaps|0.123|456|789|u=m} → 0.123456789 m or such). During 2008-2010, the MediaWiki 1.6 software has been using a 40-nest limit to stop "runaway" formatting of pages, when 60 (or 200) levels would be more practical (and stop any looping templates soon enough).

Meawhile, by changing the if-else validation checks to non-nested if-then logic, all error conditions are reported as a sequence of messages, and then the output will still be attempted. However, that is a good tactic because if 2 parameters are wrong, then getting a message for each of them is better (at one time), and then seeing a partial result can help to spot which instance of {Val} has those invalid parameters. Template {Val} had been reporting 1 error and stopping:

  • For {val|0.1234S6|0.L} using 5=S, 1=L gives: {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}

With the internal nesting reduced, then Val also reports "0.L" as an invalid number.

These results were confirmed using the sandbox variation of Val to show the proposed changes. -Wikid77 (talk) 21:00, 10 December 2010 (UTC)

Using multi-nested templates

10-Dec-2010: The Template:Val/sandbox variation was used to develop non-nested validation of parameters. It continues to show messages for each invalid parameter, then always attempts the output, rather than nest the logic when checking for errors, else nest for further processing.

The problems with nesting beyond the tiny 40-level limit (in MediaWiki 1.6 during 2009-2010), which restricts the nesting of templates and if-else logic, is shown in the following examples.

* Nest 27 deep & try {Val/sandbox|9888.12345}: <!--
-->{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x
|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x
|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x|{{1x
|→ {{Val/sandbox|9888.12345}}
}}}} }}}} }}}} }}}} }}}}  }}}} }}}} }}}} }}}} }}}}
}}}} }}}} }}}} }}
  • Nest 27 deep & try {Val/sandbox|9888.12345}: {{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|{{Expansion depth limit exceeded|→ {{Expansion depth limit exceeded|9888.12345}}

}}}} }}}} }}}} }}


  • Nest 20 deep & try {Val|9888.12345}: → {{Expansion depth limit exceeded|9888.12345 |nocategory=true}}
  • Nest 16 deep & try {Val|9888.123456789}: → {{#invoke:Error|error|Error in {{[[Sjabloon:{{{Expansion depth limit exceeded}}}|{{{Expansion depth limit exceeded}}}]]}}: first argument is not a valid number or requires too much precision to display.|tag=}}

Because {Val} had been coded with nested if-else-if-else-if-else, to check for 8 error conditions, it could not run within other templates nested to 20 deep, during 2009-2010, but the sandbox version could run even when nested 27 deep. When Val processes the decimal digits, it nests 1 level deeper for each decimal digit after 4 (beyond 0.0001). -Wikid77 (talk) 21:00, 10 December 2010 (UTC)