Open Journal Systems  3.3.0
NumberTest.php
1 <?php
2 /*
3  * citeproc-php
4  *
5  * @link http://github.com/seboettg/citeproc-php for the source repository
6  * @copyright Copyright (c) 2016 Sebastian Böttger.
7  * @license https://opensource.org/licenses/MIT
8  */
9 
11 
12 use PHPUnit\Framework\TestCase;
17 
18 class NumberTest extends TestCase
19 {
21 
22  public function setUp()
23  {
24  parent::setUp();
25  $context = new Context();
26  $context->setLocale(new Locale("en-GB"));
27  CiteProc::setContext($context);
28  }
29 
30  public function testRenderOrdinal()
31  {
32 
33  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="ordinal"/>'));
34  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": 3}");
35 
36  $this->assertEquals("3rd", $number->render($data));
37  }
38 
39  public function testRenderLongOrdinal()
40  {
41  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="long-ordinal"/>'));
42  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": 3}");
43 
44  $this->assertEquals("third", $number->render($data));
45  }
46 
47  public function testRenderRoman()
48  {
49  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="roman"/>'));
50  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": 4}");
51 
52  $this->assertEquals("iv", $number->render($data));
53 
54  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": 1678}");
55  $this->assertEquals("mdclxxviii", $number->render($data));
56  }
57 
58  public function testRenderAffixesTextCase()
59  {
60  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="roman" text-case="uppercase" prefix="[" suffix="]"/>'));
61  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": 16}");
62  $this->assertEquals("[XVI]", $number->render($data));
63  }
64 
65  public function testNumberAffixes()
66  {
67  $this->_testRenderTestSuite("number_affixes");
68  }
69 
70  public function testNumberFontStyle()
71  {
72  $this->_testRenderTestSuite("number_font-style");
73  }
74 
75  public function testNumberFontWeight()
76  {
77  $this->_testRenderTestSuite("number_font-weight");
78  }
79 
80  public function testNumberFontVariant()
81  {
82  $this->_testRenderTestSuite("number_font-variant");
83  }
84 
85  public function testNumberFormat()
86  {
87  $this->_testRenderTestSuite("number_format");
88  }
89 
90  public function testNumberSpacing()
91  {
92  $this->_testRenderTestSuite("number_spacing");
93  }
94 
95  public function testNumberTextCase()
96  {
97  $this->_testRenderTestSuite("number_text-case");
98  }
99 
100  public function testNumberTextDecoration()
101  {
102  $this->_testRenderTestSuite("number_text-decoration");
103  }
104 
105  public function testNumberVerticalAlign()
106  {
107  $this->_testRenderTestSuite("number_vertical-align");
108  }
109 
110  /*
111  public function testNumberPlainHyphenOrEnDashAlwaysPlural()
112  {
113  $this->_testRenderTestSuite("number_PlainHyphenOrEnDashAlwaysPlural");
114  }
115  */
116 
117  public function testNumberSimpleRoman()
118  {
119  $this->_testRenderTestSuite("number_SimpleNumberRoman");
120  }
121 
122  public function testRomanInputSingleNumber()
123  {
124  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="ordinal"/>'));
125  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": \"IV\"}");
126  $this->assertEquals("4th", $number->render($data));
127 
128  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="ordinal"/>'));
129  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": \"ii\"}");
130  $this->assertEquals("2nd", $number->render($data));
131  }
132 
133  public function testRomanInputRangeNumber()
134  {
135  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="ordinal"/>'));
136  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": \"IV-VI\"}");
137  $this->assertEquals("4th-6th", $number->render($data));
138 
139  $number = new Number(new \SimpleXMLElement('<number variable="edition" form="ordinal"/>'));
140  $data = json_decode("{\"title\": \"Ein Buch\", \"edition\": \"ii-x\"}");
141  $this->assertEquals("2nd-10th", $number->render($data));
142  }
143 }
Seboettg\CiteProc\TestSuiteTestCaseTrait
trait TestSuiteTestCaseTrait
Definition: TestSuiteTestCaseTrait.php:17
Seboettg\CiteProc\Rendering\NumberTest\testRenderLongOrdinal
testRenderLongOrdinal()
Definition: NumberTest.php:39
Seboettg\CiteProc\Rendering\NumberTest\testRomanInputRangeNumber
testRomanInputRangeNumber()
Definition: NumberTest.php:133
Seboettg\CiteProc\Context
Definition: Context.php:32
Seboettg\CiteProc\Locale\Locale
Definition: Locale.php:33
Seboettg\CiteProc\Rendering\NumberTest\testRenderRoman
testRenderRoman()
Definition: NumberTest.php:47
Seboettg\CiteProc\Rendering\NumberTest
Definition: NumberTest.php:18
Seboettg\CiteProc\Rendering\NumberTest\testNumberFontStyle
testNumberFontStyle()
Definition: NumberTest.php:70
Seboettg\CiteProc\Rendering\NumberTest\testNumberTextDecoration
testNumberTextDecoration()
Definition: NumberTest.php:100
Seboettg\CiteProc\Rendering\NumberTest\testNumberAffixes
testNumberAffixes()
Definition: NumberTest.php:65
Seboettg\CiteProc\Rendering\NumberTest\testNumberFontWeight
testNumberFontWeight()
Definition: NumberTest.php:75
Seboettg\CiteProc\_testRenderTestSuite
_testRenderTestSuite($filterTests, $ignore=null)
Definition: TestSuiteTestCaseTrait.php:27
Seboettg\CiteProc\Rendering\NumberTest\testRenderOrdinal
testRenderOrdinal()
Definition: NumberTest.php:30
Seboettg\CiteProc\CiteProc
Definition: CiteProc.php:32
Seboettg\CiteProc\Rendering\NumberTest\setUp
setUp()
Definition: NumberTest.php:22
Seboettg\CiteProc\Rendering\NumberTest\testRenderAffixesTextCase
testRenderAffixesTextCase()
Definition: NumberTest.php:58
Seboettg\CiteProc\Rendering\NumberTest\testNumberFormat
testNumberFormat()
Definition: NumberTest.php:85
Seboettg\CiteProc\Rendering\NumberTest\testRomanInputSingleNumber
testRomanInputSingleNumber()
Definition: NumberTest.php:122
Seboettg\CiteProc\Rendering
Seboettg\CiteProc\Rendering\NumberTest\testNumberSpacing
testNumberSpacing()
Definition: NumberTest.php:90
Seboettg\CiteProc\CiteProc\setContext
static setContext($context)
Definition: CiteProc.php:53
Seboettg\CiteProc\Rendering\NumberTest\testNumberFontVariant
testNumberFontVariant()
Definition: NumberTest.php:80
Seboettg\CiteProc\Rendering\NumberTest\testNumberSimpleRoman
testNumberSimpleRoman()
Definition: NumberTest.php:117
Seboettg\CiteProc\Rendering\NumberTest\testNumberTextCase
testNumberTextCase()
Definition: NumberTest.php:95
Seboettg\CiteProc\Rendering\NumberTest\testNumberVerticalAlign
testNumberVerticalAlign()
Definition: NumberTest.php:105
Seboettg\CiteProc\Rendering\Number
Definition: generic/citationStyleLanguage/lib/vendor/seboettg/citeproc-php/src/Rendering/Number.php:27