Merge branch 'MDL-80485' of https://github.com/paulholden/moodle
[moodle.git] / lib / tests / pdflib_test.php
blobec57baff78e6d66f5821c627e04f4b1b1175144e
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
17 namespace core;
19 use TCPDF_STATIC;
21 /**
22 * Tests for PDFlib
24 * @package core
25 * @copyright 2021 Brendan Heywood (brendan@catalyst-au.net)
26 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 class pdflib_test extends \advanced_testcase {
30 public function test_gettcpdf_producer() {
31 global $CFG;
32 require_once($CFG->libdir.'/pdflib.php');
34 // This is to reduce the information disclosure in PDF metadata.
35 // If we upgrade TCPDF keep it just the major version.
36 $producer = TCPDF_STATIC::getTCPDFProducer();
37 $this->assertEquals('TCPDF (http://www.tcpdf.org)', $producer);
40 public function test_qrcode() {
41 global $CFG;
42 require_once($CFG->libdir.'/pdflib.php');
44 $this->resetAfterTest();
46 $pdf = new \pdf();
47 $pdf->AddPage('P', [500, 500]);
48 $pdf->SetMargins(10, 0, 10);
50 $style = [
51 'border' => 0,
52 'vpadding' => 'auto',
53 'hpadding' => 'auto',
54 'fgcolor' => [0, 0, 0],
55 'bgcolor' => [255, 255, 255],
56 'module_width' => 1,
57 'module_height' => 1
60 $pdf->setCellPaddings(0, 0, 0, 0);
61 $pdf->write2DBarcode('https://www.example.com/moodle/admin/search.php',
62 'QRCODE,M', null, null, 35, 35, $style, 'N');
63 $pdf->SetFillColor(255, 255, 255);
64 $res = $pdf->Output('output', 'S');
66 $this->assertGreaterThan(100000, strlen($res));
67 $this->assertLessThan(120000, strlen($res));
70 /**
71 * Test get_export_fontlist function.
73 * @covers ::get_export_fontlist
75 * @return void
77 public function test_get_export_fontlist(): void {
78 global $CFG;
79 require_once($CFG->libdir.'/pdflib.php');
81 $this->resetAfterTest();
83 $pdf = new \pdf();
84 $fontlist = $pdf->get_export_fontlist();
85 $this->assertCount(1, $fontlist);
86 $this->assertArrayHasKey('freesans', $fontlist);
88 $CFG->pdfexportfont = [
89 'kozminproregular' => 'Kozmin Pro Regular',
90 'stsongstdlight' => 'STSong stdlight',
91 'invalidfont' => 'Invalid'
93 $fontlist = $pdf->get_export_fontlist();
94 $this->assertCount(2, $fontlist);
95 $this->assertArrayNotHasKey('freesans', $fontlist);
96 $this->assertArrayHasKey('kozminproregular', $fontlist);
97 $this->assertArrayHasKey('stsongstdlight', $fontlist);
98 $this->assertArrayNotHasKey('invalidfont', $fontlist);