@@ -276,6 +276,85 @@ public function testAxisBounds(): void
276276 $ this ->assertIsSchemaECMA376Valid ();
277277 }
278278
279+ public function testAxisCrosses (): void
280+ {
281+ $ oSeries = new Series ('Downloads ' , $ this ->seriesData );
282+ $ oSeries ->getFill ()->setStartColor (new Color ('FFAABBCC ' ));
283+ $ oLine = new Line ();
284+ $ oLine ->addSeries ($ oSeries );
285+ $ oShape = $ this ->oPresentation ->getActiveSlide ()->createChartShape ();
286+ $ oShape ->getPlotArea ()->setType ($ oLine );
287+
288+ $ elementCrosses = '/c:chartSpace/c:chart/c:plotArea/c:catAx/c:crosses ' ;
289+ $ elementCrossesAt = '/c:chartSpace/c:chart/c:plotArea/c:catAx/c:crossesAt ' ;
290+ $ elementAxPos = '/c:chartSpace/c:chart/c:plotArea/c:catAx/c:axPos ' ;
291+
292+ // Default autoZero
293+ $ this ->assertZipXmlElementExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses );
294+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses , 'val ' , 'autoZero ' );
295+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementAxPos , 'val ' , 'b ' );
296+ $ this ->assertIsSchemaECMA376Valid ();
297+
298+ // Crosses max
299+ $ oShape ->getPlotArea ()->getAxisX ()->setCrossesAt (Axis::CROSSES_MAX );
300+ $ this ->resetPresentationFile ();
301+
302+ $ this ->assertZipXmlElementExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses );
303+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses , 'val ' , 'max ' );
304+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementAxPos , 'val ' , 't ' );
305+ $ this ->assertIsSchemaECMA376Valid ();
306+
307+ // Crosses min
308+ $ oShape ->getPlotArea ()->getAxisX ()->setCrossesAt (Axis::CROSSES_MIN );
309+ $ this ->resetPresentationFile ();
310+
311+ $ this ->assertZipXmlElementExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses );
312+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses , 'val ' , 'min ' );
313+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementAxPos , 'val ' , 'b ' );
314+ $ this ->assertIsSchemaECMA376Valid ();
315+
316+ // Crosses custom value
317+ $ oShape ->getPlotArea ()->getAxisX ()->setCrossesAt ('10 ' );
318+ $ this ->resetPresentationFile ();
319+
320+ $ this ->assertZipXmlElementNotExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrosses );
321+ $ this ->assertZipXmlElementExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrossesAt );
322+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementCrossesAt , 'val ' , '10 ' );
323+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ elementAxPos , 'val ' , 'b ' );
324+ $ this ->assertIsSchemaECMA376Valid ();
325+ }
326+
327+ public function testIsReversedOrder (): void
328+ {
329+ $ element = '/c:chartSpace/c:chart/c:plotArea/c:catAx/c:scaling/c:orientation ' ;
330+
331+ $ oSlide = $ this ->oPresentation ->getActiveSlide ();
332+ $ oShape = $ oSlide ->createChartShape ();
333+ $ oLine = new Line ();
334+ $ oShape ->getPlotArea ()->setType ($ oLine );
335+
336+ // default
337+ $ this ->assertFalse ($ oShape ->getPlotArea ()->getAxisX ()->isReversedOrder ());
338+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ element , 'val ' , 'minMax ' );
339+ $ this ->assertIsSchemaECMA376Valid ();
340+
341+ // reversed order
342+ $ this ->assertInstanceOf (Axis::class, $ oShape ->getPlotArea ()->getAxisX ()->setIsReversedOrder (true ));
343+ $ this ->resetPresentationFile ();
344+
345+ $ this ->assertZipXmlElementExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ element );
346+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ element , 'val ' , 'maxMin ' );
347+ $ this ->assertIsSchemaECMA376Valid ();
348+
349+ // reset reversed order
350+ $ this ->assertInstanceOf (Axis::class, $ oShape ->getPlotArea ()->getAxisX ()->setIsReversedOrder (false ));
351+ $ this ->resetPresentationFile ();
352+
353+ $ this ->assertZipXmlElementExists ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ element );
354+ $ this ->assertZipXmlAttributeEquals ('ppt/charts/ ' . $ oShape ->getIndexedFilename (), $ element , 'val ' , 'minMax ' );
355+ $ this ->assertIsSchemaECMA376Valid ();
356+ }
357+
279358 public function testAxisFont (): void
280359 {
281360 $ oSlide = $ this ->oPresentation ->getActiveSlide ();
0 commit comments