‪TYPO3CMS  ‪main
BitSetTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
24 final class ‪BitSetTest extends UnitTestCase
25 {
26  #[Test]
27  public function ‪defaultBitSetOnlyHasZeroByteSet(): void
28  {
29  $bitSet = new ‪BitSet();
30  self::assertTrue($bitSet->get(0b0));
31  self::assertFalse($bitSet->get(0b1));
32  }
33 
34  #[Test]
35  public function ‪constructorSetsInternalSet(): void
36  {
37  $bitSet = new ‪BitSet(0b1 | 0b100);
38  self::assertTrue($bitSet->get(0b1));
39  self::assertTrue($bitSet->get(0b100));
40  self::assertFalse($bitSet->get(0b10));
41  }
42 
43  #[Test]
44  public function ‪setSetsBit(): void
45  {
46  $bitSet = new ‪BitSet(0b101);
47  self::assertTrue($bitSet->get(0b1));
48  self::assertTrue($bitSet->get(0b100));
49  self::assertFalse($bitSet->get(0b10));
50 
51  $bitSet->set(0b10);
52  self::assertTrue($bitSet->get(0b10));
53  }
54 
55  #[Test]
56  public function ‪setValueSetsBit(): void
57  {
58  $bitSet = new ‪BitSet();
59  self::assertFalse($bitSet->get(0b1));
60 
61  $bitSet->setValue(0b1, true);
62  self::assertTrue($bitSet->get(0b1));
63 
64  $bitSet->setValue(0b1, false);
65  self::assertFalse($bitSet->get(0b1));
66  }
67 
68  #[Test]
69  public function ‪clearUnsetsBit(): void
70  {
71  $bitSet = new ‪BitSet(0b111);
72  $bitSet->unset(0b10);
73  self::assertTrue($bitSet->get(0b1));
74  self::assertTrue($bitSet->get(0b100));
75  self::assertFalse($bitSet->get(0b10));
76  }
77 
78  #[Test]
79  public function ‪andPerformsABinaryAnd(): void
80  {
81  $bitSet = new ‪BitSet(0b101);
82  $bitSet->and(new ‪BitSet(0b111));
83 
84  // 0b101 & 0b111 === 0b101 ≙ 5
85  self::assertSame(5, $bitSet->__toInt());
86  self::assertSame('0b101', $bitSet->__toString());
87  }
88 
89  #[Test]
90  public function ‪orPerformsABinaryOr(): void
91  {
92  $bitSet = new ‪BitSet(0b101);
93  $bitSet->or(new ‪BitSet(0b011));
94 
95  // 0b101 | 0b011 === 0b111 ≙ 7
96  self::assertSame(7, $bitSet->__toInt());
97  self::assertSame('0b111', $bitSet->__toString());
98  }
99 
100  #[Test]
101  public function ‪xorPerformsABinaryXor(): void
102  {
103  $bitSet = new ‪BitSet(0b1001);
104  $bitSet->xor(new ‪BitSet(0b1010));
105 
106  // 0b1001 ^ 0b1010 === 0b11 ≙ 3
107  self::assertSame(3, $bitSet->__toInt());
108  self::assertSame('0b11', $bitSet->__toString());
109  }
110 
111  #[Test]
112  public function ‪andNotPerformsABinaryAndNot(): void
113  {
114  $bitSet = new ‪BitSet(0b111);
115  $bitSet->andNot(new ‪BitSet(0b101));
116 
117  // 0b111 & ~0b101 === 0b10 ≙ 2
118  self::assertSame(2, $bitSet->__toInt());
119  self::assertSame('0b10', $bitSet->__toString());
120  }
121 
122  #[Test]
124  {
125  $bitSet = new ‪BitSet(0b010);
126  self::assertSame(2, $bitSet->__toInt());
127  }
128 
129  #[Test]
131  {
132  $bitSet = new ‪BitSet(13);
133  self::assertSame('0b1101', $bitSet->__toString());
134  }
135 }
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\xorPerformsABinaryXor
‪xorPerformsABinaryXor()
Definition: BitSetTest.php:101
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\andPerformsABinaryAnd
‪andPerformsABinaryAnd()
Definition: BitSetTest.php:79
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\__toIntReturnsIntegerRepresentationOfBitSet
‪__toIntReturnsIntegerRepresentationOfBitSet()
Definition: BitSetTest.php:123
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\clearUnsetsBit
‪clearUnsetsBit()
Definition: BitSetTest.php:69
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\constructorSetsInternalSet
‪constructorSetsInternalSet()
Definition: BitSetTest.php:35
‪TYPO3\CMS\Core\Type\BitSet
Definition: BitSet.php:66
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\setSetsBit
‪setSetsBit()
Definition: BitSetTest.php:44
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\setValueSetsBit
‪setValueSetsBit()
Definition: BitSetTest.php:56
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\__toStringReturnsBinaryStringRepresentationOfBitSet
‪__toStringReturnsBinaryStringRepresentationOfBitSet()
Definition: BitSetTest.php:130
‪TYPO3\CMS\Core\Tests\Unit\Type
Definition: BitSetTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\andNotPerformsABinaryAndNot
‪andNotPerformsABinaryAndNot()
Definition: BitSetTest.php:112
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\orPerformsABinaryOr
‪orPerformsABinaryOr()
Definition: BitSetTest.php:90
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest
Definition: BitSetTest.php:25
‪TYPO3\CMS\Core\Tests\Unit\Type\BitSetTest\defaultBitSetOnlyHasZeroByteSet
‪defaultBitSetOnlyHasZeroByteSet()
Definition: BitSetTest.php:27