issue #335 Monad pattern introduced
This commit is contained in:
13
monad/src/test/java/com/iluwatar/monad/AppTest.java
Normal file
13
monad/src/test/java/com/iluwatar/monad/AppTest.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.iluwatar.monad;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class AppTest {
|
||||
|
||||
@Test
|
||||
public void testMain() {
|
||||
String[] args = {};
|
||||
App.main(args);
|
||||
}
|
||||
|
||||
}
|
42
monad/src/test/java/com/iluwatar/monad/MonadTest.java
Normal file
42
monad/src/test/java/com/iluwatar/monad/MonadTest.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package com.iluwatar.monad;
|
||||
|
||||
|
||||
import junit.framework.Assert;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class MonadTest {
|
||||
|
||||
@Rule
|
||||
public ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
@Test
|
||||
public void testForInvalidName() {
|
||||
thrown.expect(IllegalStateException.class);
|
||||
User tom = new User(null, 21, Sex.MALE, "tom@foo.bar");
|
||||
Validator.of(tom).validate(User::getName, Objects::nonNull, "name cannot be null").get();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForInvalidAge() {
|
||||
thrown.expect(IllegalStateException.class);
|
||||
User tom = new User("John", 17, Sex.MALE, "john@qwe.bar");
|
||||
Validator.of(tom).validate(User::getName, Objects::nonNull, "name cannot be null")
|
||||
.validate(User::getAge, age -> age > 21, "user is underaged")
|
||||
.get();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForValid() {
|
||||
User tom = new User("Sarah", 42, Sex.FEMALE, "sarah@det.org");
|
||||
User validated = Validator.of(tom).validate(User::getName, Objects::nonNull, "name cannot be null")
|
||||
.validate(User::getAge, age -> age > 21, "user is underaged")
|
||||
.validate(User::getSex, sex -> sex == Sex.FEMALE, "user is not female")
|
||||
.validate(User::getEmail, email -> email.contains("@"), "email does not contain @ sign")
|
||||
.get();
|
||||
Assert.assertSame(validated, tom);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user