public function testAddPart() { // Arrange $badge = new Badge(); $part = $this->getMockBuilder('PHP\\Badge\\Part')->disableOriginalConstructor()->getMock(); // Act $badge->addPart($part); // Assert $this->assertCount(1, $badge->getParts()); $this->assertEquals(array($part), $badge->getParts()); }
public function testRenderTwoPartWithBorderAndPredifinedWidth() { // Arrange $renderer = new SvgRenderer(new GdWidthCalculator()); $font = new Font(12, 'verdana', 'fonts/verdana.ttf'); $badge = new Badge(); $badge->setBorderRadius(3); $badge->addPart(new Part('text1', 'red', 'blue', $font, 100)); $badge->addPart(new Part('text2', 'blue', 'red', $font, 200)); // Act $result = $renderer->render($badge); // Assert $this->assertStringEqualsFile('tests/BadgeTestAsset/with-border-two-parts-predefined.svg', $result); }
public function render(Badge $badge) { $width = 0; $height = $badge->getHeight(); // Render the boxes, this will also calculate the width of the badge: $boxesMarkup = $this->renderBoxes($badge, $width); $result = ''; $result .= sprintf('<svg xmlns="http://www.w3.org/2000/svg" width="%d" height="%d">', $width, $height); $result .= '<linearGradient id="gradient" x2="0" y2="100%">'; $result .= '<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>'; $result .= '<stop offset="1" stop-opacity=".1"/>'; $result .= '</linearGradient>'; $result .= $boxesMarkup; $result .= $this->renderLabels($badge); $result .= '</svg>'; return $result; }