Open Journal Systems  3.3.0
NameTest.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;
16 
17 class NameTest extends TestCase
18 {
19 
21 
23  {
24  $this->_testRenderTestSuite("name_ArticularNameAsSortOrder");
25  }
26 
27  public function testNameArticularPlain()
28  {
29  $this->_testRenderTestSuite("name_ArticularPlain");
30  }
31 
32  public function testNameArticularShortForm()
33  {
34  $this->_testRenderTestSuite("name_ArticularShortForm.json");
35  }
36 
37  public function testNameAsianGlyphs()
38  {
39  $this->_testRenderTestSuite("name_AsianGlyphs");
40  }
41 
42  public function testNameAuthorCount()
43  {
44  $this->_testRenderTestSuite("name_AuthorCount.json");
45  }
46 
48  {
49  $this->_testRenderTestSuite("name_AuthorCountWithMultipleVariables");
50  }
51 
53  {
54  $this->_testRenderTestSuite("name_AuthorCountWithSameVarContentAndCombinedTermFail");
55  }
56 
58  {
59  $this->_testRenderTestSuite("name_AuthorCountWithSameVarContentAndCombinedTermSucceed");
60  }
61 
62  public function testNameAuthorEditorCount()
63  {
64  $this->_testRenderTestSuite("name_AuthorEditorCount");
65  }
66 
67  public function testNameCelticClanName()
68  {
69  $this->_testRenderTestSuite("name_CelticClanName");
70  }
71 
73  {
74  $this->_testRenderTestSuite("name_CeltsAndToffsCrowdedInitials");
75  }
76 
78  {
79  $this->_testRenderTestSuite("name_CeltsAndToffsNoHyphens");
80  }
81 
83  {
84  $this->_testRenderTestSuite("name_CeltsAndToffsSpacedInitials");
85  }
86 
88  {
89  $this->_testRenderTestSuite("name_CeltsAndToffsWithHyphens");
90  }
91 
92  public function testNameAttrAnd()
93  {
94  $this->_testRenderTestSuite("nameattr_And");
95  }
96 
98  {
99  $this->_testRenderTestSuite("nameattr_DelimiterPrecedesEtAl");
100  }
101 
103  {
104  $this->_testRenderTestSuite("nameattr_DelimiterPrecedesLast");
105  }
106 
107  public function testNameAttrEtAlMin()
108  {
109  $this->_testRenderTestSuite("nameattr_EtAlMin");
110  }
111 
112  public function testNameAttrEtAlUseFirst()
113  {
114  $this->_testRenderTestSuite("nameattr_EtAlUseFirst");
115  }
116 
117  public function testNameEtAlUseLast()
118  {
119  $this->_testRenderTestSuite("name_EtAlUseLast");
120  }
121 
122 
123  public function testNameAttrNameDelimiter()
124  {
125  $this->_testRenderTestSuite("nameattr_NameDelimiter");
126  }
127 
128  public function testNameAttrNameForm()
129  {
130  $this->_testRenderTestSuite("nameattr_NameForm");
131  }
132 
133  public function testNameAttrNameAsSortOrder()
134  {
135  $this->_testRenderTestSuite("nameattr_NameAsSortOrder");
136  }
137 
138  public function testNameAttrSortSeparator()
139  {
140  $this->_testRenderTestSuite("nameattr_SortSeparator");
141  }
142 
143  public function testNameAttrInitializeWith()
144  {
145  $this->_testRenderTestSuite("nameattr_InitializeWith");
146  }
147 
149  {
150  $this->_testRenderTestSuite("nameattr_EtAlSubsequentMin");
151  }
152 
154  {
155  $this->_testRenderTestSuite("nameattr_EtAlSubsequentUseFirst");
156  }
157 
159  {
160  $this->_testRenderTestSuite("nameattr_subsequent-author-substitute_complete-all");
161  }
162 
164  {
165  $this->_testRenderTestSuite("nameattr_subsequent-author-substitute_complete-each");
166  }
167 
169  {
170  $this->_testRenderTestSuite("nameattr_subsequent-author-substitute_none");
171  }
172 
174  {
175  $this->_testRenderTestSuite("nameattr_subsequent-author-substitute_partial-each");
176  }
177 
179  {
180  $this->_testRenderTestSuite("nameattr_subsequent-author-substitute_partial-first");
181  }
182 
183  public function testFormatSmallCaps()
184  {
185  $this->_testRenderTestSuite("name_FormatSmallCaps");
186  }
187 
188  public function testNameNamepartAffixes()
189  {
190  $this->_testRenderTestSuite("name_namepartAffixes.json");
191  }
192 
194  {
195  $this->_testRenderTestSuite("name_namepartAffixesNameAsSortOrder");
196  }
197 
199  $this->_testRenderTestSuite("name_CitationMacroNoInheritanceFromRoot");
200  }
201 
202  public function testInitializeCyrillicName()
203  {
204  $this->_testRenderTestSuite("nameattr_initializeCyrillicName");
205  }
206 
207  public function testEnrichMarkupNames()
208  {
209  $cslJson = '[{
210  "author": [
211  {
212  "family": "Doe",
213  "given": "John",
214  "id": "doe"
215  },
216  {
217  "family": "Müller",
218  "given": "Alexander"
219  }
220  ],
221  "id": "item-1",
222  "issued": {
223  "date-parts": [
224  [
225  "2001"
226  ]
227  ]
228  },
229  "title": "My Anonymous Heritage",
230  "type": "book"
231  }]';
232 
233  $enrichAuthorWithLinkFunction = function($authorItem, $authorName) {
234  return isset($authorItem->id) ? '<a href="https://example.org/author/' . $authorItem->id . '" title="' . $authorName . '">'
235  . $authorName . '</a>' : $authorName;
236  };
237 
238  $apa = StyleSheet::loadStyleSheet("apa");
239  $citeproc = new CiteProc($apa, "de-DE", [
240  'author' => $enrichAuthorWithLinkFunction
241  ]);
242  $actual = $citeproc->render(json_decode($cslJson), "bibliography");
243 
244  $expected = '<div class="csl-bib-body">
245  <div class="csl-entry"><a href="https://example.org/author/doe" title="Doe, J.">Doe, J.</a>, &#38; Müller, A. (2001). <i>My Anonymous Heritage</i>.</div>
246 </div>';
247  $this->assertEquals($expected, $actual);
248  }
249 
251  {
252  $cslJson = '[{
253  "author": [
254  {
255  "family": "Doe",
256  "given": "John",
257  "id": "doe"
258  },
259  {
260  "family": "Müller",
261  "given": "Alexander"
262  }
263  ],
264  "id": "item-1",
265  "issued": {
266  "date-parts": [
267  [
268  "2001"
269  ]
270  ]
271  },
272  "title": "My Anonymous Heritage",
273  "type": "book"
274  }]';
275 
276  $enrichAuthorWithLinkFunctionBibliography = function($authorItem, $authorName) {
277  return isset($authorItem->id) ? '<a href="https://example.org/author/' . $authorItem->id . '" title="' . $authorName . '">'
278  . $authorName . '</a>' : $authorName;
279  };
280 
281  $apa = StyleSheet::loadStyleSheet("apa");
282  $citeproc = new CiteProc($apa, "de-DE", [
283  "bibliography" => [
284  "author" => $enrichAuthorWithLinkFunctionBibliography,
285  "csl-entry" => function($item, $renderedItem) {
286  return '<a id="' . $item->id . '"></a>' . $renderedItem;
287  }
288  ],
289  "citation" => [
290  "csl-entry" => function($item, $renderedItem) {
291  return '<a href="#' . $item->id . '">' . $renderedItem . '</a>';
292  }
293  ]
294  ]);
295  $actualBibliography = $citeproc->render(json_decode($cslJson), "bibliography");
296  $actualCitation = $citeproc->render(json_decode($cslJson), "citation");
297  $expectedBibliography = '<div class="csl-bib-body">
298  <div class="csl-entry"><a id="item-1"></a><a href="https://example.org/author/doe" title="Doe, J.">Doe, J.</a>, &#38; Müller, A. (2001). <i>My Anonymous Heritage</i>.</div>
299 </div>';
300  $expectedCitation = '(<a href="#item-1">Doe &#38; Müller, 2001</a>)';
301  $this->assertEquals($expectedCitation, $actualCitation);
302  $this->assertEquals($expectedBibliography, $actualBibliography);
303  }
304 }
Seboettg\CiteProc\TestSuiteTestCaseTrait
trait TestSuiteTestCaseTrait
Definition: TestSuiteTestCaseTrait.php:17
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAsianGlyphs
testNameAsianGlyphs()
Definition: NameTest.php:37
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAuthorCountWithSameVarContentAndCombinedTermSucceed
testNameAuthorCountWithSameVarContentAndCombinedTermSucceed()
Definition: NameTest.php:57
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAuthorCountWithMultipleVariables
testNameAuthorCountWithMultipleVariables()
Definition: NameTest.php:47
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrSortSeparator
testNameAttrSortSeparator()
Definition: NameTest.php:138
Seboettg\CiteProc\Rendering\Name\NameTest\testNameNamepartAffixesNameAsSortOrder
testNameNamepartAffixesNameAsSortOrder()
Definition: NameTest.php:193
Seboettg\CiteProc\CiteProc\render
render($data, $mode="bibliography", $citationItems=[], $citationAsArray=false)
Definition: CiteProc.php:167
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAuthorCount
testNameAuthorCount()
Definition: NameTest.php:42
Seboettg\CiteProc\Rendering\Name\NameTest\testNameArticularNameAsSortOrder
testNameArticularNameAsSortOrder()
Definition: NameTest.php:22
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentNone
testNameAttrEtAlSubsequentNone()
Definition: NameTest.php:168
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrNameForm
testNameAttrNameForm()
Definition: NameTest.php:128
Seboettg\CiteProc\Rendering\Name\NameTest\testNameCeltsAndToffsCrowdedInitials
testNameCeltsAndToffsCrowdedInitials()
Definition: NameTest.php:72
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrNameDelimiter
testNameAttrNameDelimiter()
Definition: NameTest.php:123
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentCompleteEach
testNameAttrEtAlSubsequentCompleteEach()
Definition: NameTest.php:163
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentPartialEach
testNameAttrEtAlSubsequentPartialEach()
Definition: NameTest.php:173
Seboettg\CiteProc\Rendering\Name\NameTest\testFormatSmallCaps
testFormatSmallCaps()
Definition: NameTest.php:183
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrDelimiterPrecedesEtAl
testNameAttrDelimiterPrecedesEtAl()
Definition: NameTest.php:97
Seboettg\CiteProc\Rendering\Name
Definition: EtAl.php:10
Seboettg\CiteProc\Rendering\Name\NameTest
Definition: NameTest.php:17
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentUseFirst
testNameAttrEtAlSubsequentUseFirst()
Definition: NameTest.php:153
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentPartialFirst
testNameAttrEtAlSubsequentPartialFirst()
Definition: NameTest.php:178
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlUseFirst
testNameAttrEtAlUseFirst()
Definition: NameTest.php:112
Seboettg\CiteProc\_testRenderTestSuite
_testRenderTestSuite($filterTests, $ignore=null)
Definition: TestSuiteTestCaseTrait.php:27
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrDelimiterPrecedesLast
testNameAttrDelimiterPrecedesLast()
Definition: NameTest.php:102
Seboettg\CiteProc\StyleSheet\loadStyleSheet
static loadStyleSheet($styleName)
Definition: StyleSheet.php:35
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAuthorCountWithSameVarContentAndCombinedTermFail
testNameAuthorCountWithSameVarContentAndCombinedTermFail()
Definition: NameTest.php:52
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlMin
testNameAttrEtAlMin()
Definition: NameTest.php:107
Seboettg\CiteProc\CiteProc
Definition: CiteProc.php:32
Seboettg\CiteProc\Rendering\Name\NameTest\testNameCeltsAndToffsWithHyphens
testNameCeltsAndToffsWithHyphens()
Definition: NameTest.php:87
Seboettg\CiteProc\Rendering\Name\NameTest\testEnrichMarkupNamesCitationsAndBibliography
testEnrichMarkupNamesCitationsAndBibliography()
Definition: NameTest.php:250
Seboettg\CiteProc\Rendering\Name\NameTest\testNameCitationMacroNoInheritanceFromRoot
testNameCitationMacroNoInheritanceFromRoot()
Definition: NameTest.php:198
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentCompleteAll
testNameAttrEtAlSubsequentCompleteAll()
Definition: NameTest.php:158
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrNameAsSortOrder
testNameAttrNameAsSortOrder()
Definition: NameTest.php:133
Seboettg\CiteProc\Rendering\Name\NameTest\testNameArticularShortForm
testNameArticularShortForm()
Definition: NameTest.php:32
Seboettg\CiteProc\Rendering\Name\NameTest\testNameCeltsAndToffsNoHyphens
testNameCeltsAndToffsNoHyphens()
Definition: NameTest.php:77
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAuthorEditorCount
testNameAuthorEditorCount()
Definition: NameTest.php:62
Seboettg\CiteProc\StyleSheet
Definition: StyleSheet.php:22
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrAnd
testNameAttrAnd()
Definition: NameTest.php:92
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrEtAlSubsequentMin
testNameAttrEtAlSubsequentMin()
Definition: NameTest.php:148
Seboettg\CiteProc\Rendering\Name\NameTest\testNameCeltsAndToffsSpacedInitials
testNameCeltsAndToffsSpacedInitials()
Definition: NameTest.php:82
Seboettg\CiteProc\Rendering\Name\NameTest\testNameNamepartAffixes
testNameNamepartAffixes()
Definition: NameTest.php:188
Seboettg\CiteProc\Rendering\Name\NameTest\testNameArticularPlain
testNameArticularPlain()
Definition: NameTest.php:27
Seboettg\CiteProc\Rendering\Name\NameTest\testInitializeCyrillicName
testInitializeCyrillicName()
Definition: NameTest.php:202
Seboettg\CiteProc\Rendering\Name\NameTest\testNameAttrInitializeWith
testNameAttrInitializeWith()
Definition: NameTest.php:143
Seboettg\CiteProc\Rendering\Name\NameTest\testNameCelticClanName
testNameCelticClanName()
Definition: NameTest.php:67
Seboettg\CiteProc\Rendering\Name\NameTest\testEnrichMarkupNames
testEnrichMarkupNames()
Definition: NameTest.php:207
Seboettg\CiteProc\Rendering\Name\NameTest\testNameEtAlUseLast
testNameEtAlUseLast()
Definition: NameTest.php:117