package io.progix.dropwizard.patch.test;
import com.fasterxml.jackson.core.JsonPointer;
import io.progix.dropwizard.patch.JsonPath;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class JsonPathTest {
JsonPath ab;
JsonPath acend;
JsonPath ac2;
JsonPath apound;
@Before
public void init() {
ab = new JsonPath(JsonPointer.compile("/a/b"));
acend = new JsonPath(JsonPointer.compile("/a/c/-"));
ac2 = new JsonPath(JsonPointer.compile("/a/c/2"));
apound = new JsonPath(JsonPointer.compile("/a/#"));
}
@Test
public void sizeTest() {
assertEquals(ab.size(), 2);
assertEquals(acend.size(), 3);
assertEquals(apound.size(), 2);
assertEquals(ac2.size(), 3);
assertEquals(new JsonPath(JsonPointer.compile("/a")).size(), 1);
assertEquals(new JsonPath(JsonPointer.compile("/")).size(), 0);
assertEquals(new JsonPath(JsonPointer.compile("")).size(), 0);
}
@Test
public void endsAtTest() {
assertFalse(ab.endsAt(0));
assertTrue(ab.endsAt(1));
assertFalse(ab.endsAt(2));
assertFalse(apound.endsAt(0));
assertTrue(apound.endsAt(1));
assertFalse(apound.endsAt(2));
assertFalse(acend.endsAt(0));
assertFalse(acend.endsAt(1));
assertTrue(acend.endsAt(2));
assertFalse(acend.endsAt(3));
assertFalse(ac2.endsAt(0));
assertFalse(ac2.endsAt(1));
assertTrue(ac2.endsAt(2));
assertFalse(ac2.endsAt(3));
}
@Test
public void isPathTest() {
assertTrue(ab.is("/a/b"));
assertFalse(ab.is("/a/c"));
assertFalse(ab.is("/a/2"));
assertFalse(ab.is("/a"));
assertFalse(ab.is("/a/#"));
assertFalse(ab.is("/a/~#"));
assertFalse(ab.is("/a/b/c"));
assertFalse(ab.is("/a/b/2"));
assertFalse(ab.is("/a/b/#"));
assertFalse(ab.is("/a/b/~#"));
assertTrue(apound.is("/a/~#"));
assertFalse(apound.is("/a/c"));
assertFalse(apound.is("/a/2"));
assertFalse(apound.is("/a"));
assertFalse(apound.is("/a/#"));
assertFalse(apound.is("/a/b/c"));
assertFalse(apound.is("/a/b/2"));
assertFalse(apound.is("/a/b/#"));
assertFalse(apound.is("/a/b/~#"));
assertTrue(acend.is("/a/c/-"));
assertFalse(acend.is("/a/b"));
assertFalse(acend.is("/a/c"));
assertFalse(acend.is("/a/2"));
assertFalse(acend.is("/a"));
assertFalse(acend.is("/a/#"));
assertFalse(acend.is("/a/~#"));
assertFalse(acend.is("/a/b/c"));
assertFalse(acend.is("/a/b/2"));
assertFalse(acend.is("/a/b/#"));
assertFalse(acend.is("/a/b/~#"));
assertTrue(ac2.is("/a/c/2"));
assertTrue(ac2.is("/a/c/#"));
assertFalse(ac2.is("/a/b"));
assertFalse(ac2.is("/a/c"));
assertFalse(ac2.is("/a/2"));
assertFalse(ac2.is("/a"));
assertFalse(ac2.is("/a/#"));
assertFalse(ac2.is("/a/~#"));
assertFalse(ac2.is("/a/b/c"));
assertFalse(ac2.is("/a/b/2"));
assertFalse(ac2.is("/a/b/#"));
assertFalse(ac2.is("/a/b/~#"));
}
}