MDL-32960 put phpunit integration tests to one test suite and execute them first
[moodle.git] / lib / phpunit / tests / basic_test.php
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.
13 //
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 /**
18  * PHPUnit integration tests
19  *
20  * @package    core
21  * @category   phpunit
22  * @copyright  2012 Petr Skoda {@link http://skodak.org}
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 defined('MOODLE_INTERNAL') || die();
29 /**
30  * Test basic_testcase extra features and PHPUnit Moodle integration.
31  *
32  * @package    core
33  * @category   phpunit
34  * @copyright  2012 Petr Skoda {@link http://skodak.org}
35  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36  */
37 class core_phpunit_basic_testcase extends basic_testcase {
39     /**
40      * Tests that bootstrapping has occurred correctly
41      * @return void
42      */
43     public function test_bootstrap() {
44         global $CFG;
45         $this->assertTrue(isset($CFG->httpswwwroot));
46         $this->assertEquals($CFG->httpswwwroot, $CFG->wwwroot);
47         $this->assertEquals($CFG->prefix, $CFG->phpunit_prefix);
48     }
50     /**
51      * This is just a verification if I understand the PHPUnit assert docs right --skodak
52      * @return void
53      */
54     public function test_assert_behaviour() {
55         // arrays
56         $a = array('a', 'b', 'c');
57         $b = array('a', 'c', 'b');
58         $c = array('a', 'b', 'c');
59         $d = array('a', 'b', 'C');
60         $this->assertNotEquals($a, $b);
61         $this->assertNotEquals($a, $d);
62         $this->assertEquals($a, $c);
63         $this->assertEquals($a, $b, '', 0, 10, true);
65         // objects
66         $a = new stdClass();
67         $a->x = 'x';
68         $a->y = 'y';
69         $b = new stdClass(); // switched order
70         $b->y = 'y';
71         $b->x = 'x';
72         $c = $a;
73         $d = new stdClass();
74         $d->x = 'x';
75         $d->y = 'y';
76         $d->z = 'z';
77         $this->assertEquals($a, $b);
78         $this->assertNotSame($a, $b);
79         $this->assertEquals($a, $c);
80         $this->assertSame($a, $c);
81         $this->assertNotEquals($a, $d);
83         // string comparison
84         $this->assertEquals(1, '1');
85         $this->assertEquals(null, '');
87         $this->assertNotEquals(1, '1 ');
88         $this->assertNotEquals(0, '');
89         $this->assertNotEquals(null, '0');
90         $this->assertNotEquals(array(), '');
92         // other comparison
93         $this->assertEquals(null, null);
94         $this->assertEquals(false, null);
95         $this->assertEquals(0, null);
97         // emptiness
98         $this->assertEmpty(0);
99         $this->assertEmpty(0.0);
100         $this->assertEmpty('');
101         $this->assertEmpty('0');
102         $this->assertEmpty(false);
103         $this->assertEmpty(null);
104         $this->assertEmpty(array());
106         $this->assertNotEmpty(1);
107         $this->assertNotEmpty(0.1);
108         $this->assertNotEmpty(-1);
109         $this->assertNotEmpty(' ');
110         $this->assertNotEmpty('0 ');
111         $this->assertNotEmpty(true);
112         $this->assertNotEmpty(array(null));
113         $this->assertNotEmpty(new stdClass());
114     }
116 // Uncomment following tests to see logging of unexpected changes in global state and database
117     /*
118         public function test_db_modification() {
119             global $DB;
120             $DB->set_field('user', 'confirmed', 1, array('id'=>-1));
121         }
123         public function test_cfg_modification() {
124             global $CFG;
125             $CFG->xx = 'yy';
126             unset($CFG->admin);
127             $CFG->rolesactive = 0;
128         }
130         public function test_user_modification() {
131             global $USER;
132             $USER->id = 10;
133         }
135         public function test_course_modification() {
136             global $COURSE;
137             $COURSE->id = 10;
138         }
140         public function test_all_modifications() {
141             global $DB, $CFG, $USER, $COURSE;
142             $DB->set_field('user', 'confirmed', 1, array('id'=>-1));
143             $CFG->xx = 'yy';
144             unset($CFG->admin);
145             $CFG->rolesactive = 0;
146             $USER->id = 10;
147             $COURSE->id = 10;
148         }
150         public function test_transaction_problem() {
151             global $DB;
152             $DB->start_delegated_transaction();
153         }
154     */