annotate src/main/java/fj/test/Bool.java @ 0:fe80c1edf1be

add getLoop
author tatsuki
date Fri, 20 Mar 2015 21:04:03 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
1 package fj.test;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
2
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
3 import fj.P1;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
4 import static fj.test.Property.prop;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
5
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
6 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
7 * A boolean wrapper that works well with properties.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
8 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
9 * @version %build.number%
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
10 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
11 public final class Bool {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
12 private final boolean b;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
13
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
14 private static final Bool t = new Bool(true);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
15 private static final Bool f = new Bool(false);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
16
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
17 private Bool(final boolean b) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
18 this.b = b;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
19 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
20
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
21 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
22 * Returns <code>true</code> if this value is true, <code>false</code> otherwise.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
23 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
24 * @return <code>true</code> if this value is true, <code>false</code> otherwise.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
25 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
26 public boolean is() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
27 return b;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
28 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
29
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
30 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
31 * Returns <code>false</code> if this value is true, <code>true</code> otherwise.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
32 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
33 * @return <code>false</code> if this value is true, <code>true</code> otherwise.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
34 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
35 public boolean isNot() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
36 return !b;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
37 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
38
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
39 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
40 * Returns a property that produces a result only if this value is true. The result will be taken
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
41 * from the given property.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
42 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
43 * @param p The property to return if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
44 * @return a property that produces a result only if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
45 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
46 public Property implies(final P1<Property> p) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
47 return Property.implies(b, p);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
48 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
49
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
50 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
51 * Returns a property that produces a result only if this value is true. The result will be taken
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
52 * from the given property.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
53 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
54 * @param p The property to return if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
55 * @return a property that produces a result only if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
56 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
57 public Property implies(final Property p) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
58 return Property.implies(b, new P1<Property>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
59 public Property _1() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
60 return p;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
61 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
62 });
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
63 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
64
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
65 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
66 * Returns a property that produces a result only if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
67 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
68 * @param c The value to construct a property with to return if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
69 * @return a property that produces a result only if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
70 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
71 public Property implies(final Bool c) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
72 return implies(prop(c.b));
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
73 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
74
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
75 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
76 * Returns a property that produces a result only if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
77 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
78 * @param c The value to construct a property with to return if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
79 * @return a property that produces a result only if this value is true.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
80 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
81 public Property implies(final boolean c) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
82 return Property.implies(b, new P1<Property>() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
83 public Property _1() {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
84 return prop(c);
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
85 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
86 });
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
87 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
88
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
89 /**
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
90 * Construct a <code>Bool</code> from the given value.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
91 *
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
92 * @param b The value to construct a <code>Bool</code> with.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
93 * @return A <code>Bool</code> from the given value.
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
94 */
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
95 public static Bool bool(final boolean b) {
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
96 return b ? t : f;
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
97 }
fe80c1edf1be add getLoop
tatsuki
parents:
diff changeset
98 }