Skip to content

Commit

Permalink
Add StringSchema, Validator, ValidatorTest and update build.gradle.kts
Browse files Browse the repository at this point in the history
  • Loading branch information
niyatanya committed Apr 8, 2024
1 parent 9673403 commit dac6d25
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 8 deletions.
3 changes: 2 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ plugins {
application
checkstyle
jacoco
id("io.freefair.lombok") version "8.6"
}

application { mainClass.set("hexlet.code.App") }
application { mainClass.set("hexlet.code.Validator") }

group = "hexlet.code"
version = "1.0-SNAPSHOT"
Expand Down
7 changes: 0 additions & 7 deletions app/src/main/java/hexlet/code/App.java

This file was deleted.

9 changes: 9 additions & 0 deletions app/src/main/java/hexlet/code/Validator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hexlet.code;

import hexlet.code.schemas.StringSchema;

public class Validator {
public StringSchema string() {
return new StringSchema();
}
}
56 changes: 56 additions & 0 deletions app/src/main/java/hexlet/code/schemas/StringSchema.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package hexlet.code.schemas;

import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.AllArgsConstructor;
import java.util.Arrays;
import java.util.List;

@Setter
@AllArgsConstructor
@NoArgsConstructor
public class StringSchema {
private List<Object> listOfNotValidContent;
private int minLength = 0;
private String contentToBeContained = "";


public void required() {
List<Object> list = Arrays.asList(null, "");
this.listOfNotValidContent.addAll(list);
}

public StringSchema minLength(int length) {
this.minLength = length;
return new StringSchema(this.listOfNotValidContent, this.minLength, this.contentToBeContained);
}

public StringSchema contains(String content) {
this.contentToBeContained = content;
return new StringSchema(this.listOfNotValidContent, this.minLength, this.contentToBeContained);
}

public boolean isValid(String text) {
if (text.length() > minLength && containsText(text, contentToBeContained)) {
if (isRequired(text)) {
return true;
}
}
return false;
}

public boolean isRequired(String text) {
for (Object item : listOfNotValidContent) {
if (text.equals(item)) {
return false;
}
}
return true;
}

public boolean containsText(String text, String content) {
return text.matches(content);
}


}
46 changes: 46 additions & 0 deletions app/src/test/java/hexlet/code/ValidatorTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package hexlet.code;

import hexlet.code.schemas.StringSchema;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class ValidatorTest {
private static StringSchema stringSchema;
@BeforeEach
public void preparation() {
Validator val = new Validator();
stringSchema = val.string();
}

@Test
public void stringSchemaTestNormal() {
assertTrue(stringSchema.isValid("hexlet"));
assertTrue(stringSchema.isValid(""));
assertTrue(stringSchema.isValid(null));
}

@Test
public void stringSchemaTestRequired() {
stringSchema.required();
assertTrue(stringSchema.isValid("hexlet"));
assertFalse(stringSchema.isValid(""));
assertFalse(stringSchema.isValid(null));
}

@Test
public void stringSchemaTestMinLength() {
stringSchema.minLength(4);
assertTrue(stringSchema.isValid("hexlet"));
assertFalse(stringSchema.isValid("hex"));
}

@Test
public void stringSchemaTestContains() {
assertTrue(stringSchema.contains("hex").isValid("hexlet"));
assertFalse(stringSchema.contains("hes").isValid("hexlet"));
}

}

0 comments on commit dac6d25

Please sign in to comment.