Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
7 / 7
CRAP
100.00% covered (success)
100.00%
1 / 1
Util
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
7 / 7
20
100.00% covered (success)
100.00%
1 / 1
 toString
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
 oneTrue
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 oneFalse
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 anyTrue
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
 anyFalse
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
 allTrue
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 allFalse
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3/**
4 * @license MIT
5 * @author hazuki3417<hazuki3417@gmail.com>
6 * @copyright 2022 hazuki3417 all rights reserved.
7 */
8
9namespace Selen\Bool;
10
11/**
12 * bool型のユーティリティクラスです
13 */
14class Util
15{
16    /**
17     * bool型を真偽値文字列に変換します
18     *
19     * @param bool $value 真偽値を渡します
20     *
21     * @return string 変換した値を返します
22     */
23    public static function toString(bool $value): string
24    {
25        return $value ? 'true' : 'false';
26    }
27
28    /**
29     * trueが1つだけ存在するか確認します
30     *
31     * @param bool $values 真偽値を渡します
32     *
33     * @return bool 1つだけ存在する場合はtrueを、それ以外の場合はfalseを返します
34     */
35    public static function oneTrue(bool ...$values): bool
36    {
37        $count = 0;
38
39        foreach ($values as $result) {
40            if ($result === true) {
41                ++$count;
42            }
43        }
44        return $count === 1;
45    }
46
47    /**
48     * falseが1つだけ存在するか確認します
49     *
50     * @param bool $values 真偽値を渡します
51     *
52     * @return bool 1つだけ存在する場合はtrueを、それ以外の場合はfalseを返します
53     */
54    public static function oneFalse(bool ...$values): bool
55    {
56        $count = 0;
57
58        foreach ($values as $result) {
59            if ($result === false) {
60                ++$count;
61            }
62        }
63        return $count === 1;
64    }
65
66    /**
67     * trueが存在するか確認します
68     *
69     * @param bool $values 真偽値を渡します
70     *
71     * @return bool 存在する場合はtrueを、それ以外の場合はfalseを返します
72     */
73    public static function anyTrue(bool ...$values): bool
74    {
75        foreach ($values as $result) {
76            if ($result === true) {
77                return true;
78            }
79        }
80        return false;
81    }
82
83    /**
84     * falseが存在するか確認します
85     *
86     * @param bool $values 真偽値を渡します
87     *
88     * @return bool 存在する場合はtrueを、それ以外の場合はfalseを返します
89     */
90    public static function anyFalse(bool ...$values): bool
91    {
92        foreach ($values as $result) {
93            if ($result === false) {
94                return true;
95            }
96        }
97        return false;
98    }
99
100    /**
101     * すべてtrueか確認します
102     *
103     * @param bool $values 真偽値を渡します
104     *
105     * @return bool すべてtrueの場合はtrueを、それ以外の場合はfalseを返します
106     */
107    public static function allTrue(bool ...$values): bool
108    {
109        $count = 0;
110
111        foreach ($values as $result) {
112            if ($result === true) {
113                ++$count;
114            }
115        }
116        return $count === count($values);
117    }
118
119    /**
120     * すべてfalseか確認します
121     *
122     * @param bool $values 真偽値を渡します
123     *
124     * @return bool すべてfalseの場合はtrueを、それ以外の場合はfalseを返します
125     */
126    public static function allFalse(bool ...$values): bool
127    {
128        $count = 0;
129
130        foreach ($values as $result) {
131            if ($result === false) {
132                ++$count;
133            }
134        }
135        return $count === count($values);
136    }
137}