Package unit.models

Source Code of unit.models.RuleTest

package unit.models;

import java.util.List;

import models.Rule;
import models.User;

import org.junit.Test;

import play.cache.Cache;
import rules.RuleType;

import com.google.common.collect.Lists;
public class RuleTest extends BaseModelTest {
    @Test
    public void testNameContains() {
        Rule r = new Rule();
        r.pattern = "foo";
        r.type = RuleType.NAME_CONTAINS;
        r.dest = "/tmp";

        assertFalse(r.matches("bar"));
        assertTrue(r.matches("foobar"));
        assertTrue(r.matches("barfoo"));
    }

    @Test
    public void testGlob() {
        Rule r = new Rule();
        r.type = RuleType.GLOB;
        r.dest = "/tmp";

        r.pattern = "foo";
        assertFalse(r.matches("bar"));
        assertFalse(r.matches("foobar"));
        assertFalse(r.matches("barfoo"));
        assertTrue(r.matches("foo"));

        r.pattern = "fo.o";
        assertFalse(r.matches("foxo"));
        assertFalse(r.matches("foo"));
        assertTrue(r.matches("fo.o"));

        r.pattern = "foo?";
        assertFalse(r.matches("bar"));
        assertFalse(r.matches("fooxx"));
        assertFalse(r.matches("xfoox"));
        assertTrue(r.matches("foo "));
        assertTrue(r.matches("foox"));
        assertTrue(r.matches("foo\u2605"));

        r.pattern = "*foo";
        assertFalse(r.matches("foobar"));
        assertFalse(r.matches("  foobar"));
        assertTrue(r.matches("foo"));
        assertTrue(r.matches("bar foo"));
        assertTrue(r.matches("   foo"));

        r.pattern = "*foo*";
        assertFalse(r.matches("fo"));
        assertFalse(r.matches("bar"));
        assertFalse(r.matches(""));
        assertTrue(r.matches("foo"));
        assertTrue(r.matches("bar foo baz"));
        assertTrue(r.matches("   foo"));
        assertTrue(r.matches(" foo&."));

        r.pattern = "\\w";
        assertFalse(r.matches("a"));
        assertTrue(r.matches("\\w"));

        r.pattern = "foo.";
        assertFalse(r.matches("foo"));
        assertFalse(r.matches("foox"));
        assertTrue(r.matches("foo."));

        r.pattern = "foo[";
        assertTrue(r.matches("foo["));
        assertFalse(r.matches("foox"));
        assertFalse(r.matches("foo"));

        r.pattern = "foo[]";
        assertTrue(r.matches("foo[]"));
        assertFalse(r.matches("foox"));
        assertFalse(r.matches("foo"));
    }

    @Test
    public void testExtEquals() {
        Rule r = new Rule();
        r.type = RuleType.EXT_EQ;
        r.dest = "/tmp";

        r.pattern = null;
        assertFalse(r.matches("foo"));
        assertFalse(r.matches(null));
        assertFalse(r.matches(""));

        r.pattern = "pdf";
        assertFalse(r.matches("foo"));
        assertFalse(r.matches(""));
        assertFalse(r.matches(null));
        assertFalse(r.matches(".pdf"));
        assertFalse(r.matches("pdf"));
        assertFalse(r.matches("pdf.txt"));
        assertFalse(r.matches("pdf.other"));
        assertFalse(r.matches("foo.pdf.txt"));
        assertFalse(r.matches("file. pdf"));
        assertFalse(r.matches("file.pdf "));

        assertTrue(r.matches("x pdf.pdf"));
        assertTrue(r.matches("x pdf .pDf"));
        assertTrue(r.matches("file.name.PdF"));

        r.pattern = "p d f";
        assertTrue(r.matches("file.p d F"));

        r.pattern = "a,b ,  pdf,   ";
        assertTrue(r.matches("file.a"));
        assertTrue(r.matches("file.b"));
        assertTrue(r.matches("file.B"));
        assertTrue(r.matches("file.pdf"));
        assertTrue(r.matches("file.PdF"));
        assertFalse(r.matches("file.a,b,c"));
        assertFalse(r.matches("file.txt"));
        assertFalse(r.matches("file."));
        assertFalse(r.matches("file. "));
        assertFalse(r.matches("file"));
        assertFalse(r.matches("file,tmp"));
        assertFalse(r.matches("file.with spaces"));
        assertFalse(r.matches(".a"));
    }

    @Test
    public void testReplace() {
        User u = UserTest.newUser();
        List<Rule> rules = Lists.newArrayList();
        rules.add(new Rule(RuleType.EXT_EQ, "pdf", "/pdf", 0, u.getKey()));
        rules.add(new Rule(RuleType.GLOB, "a*", "/a", 1, u.getKey()));
        rules.add(new Rule(RuleType.NAME_CONTAINS, "foo", "/foo", 2, u.getKey()));
        Rule.replace(u, rules, null);
        List<Rule> actual = Rule.findByUserId(u.getKey());
        assertEquals(actual, rules);
       
        rules.remove(rules.size() - 1);
        rules.set(1, new Rule(RuleType.GLOB, "b*", "/b", 3, u.getKey()));
        Rule.replace(u, rules, null);
        actual = Rule.findByUserId(u.getKey());
        assertEquals(actual, rules);
    }

    @Test
    public void testCache() {
        User u = UserTest.newUser();
        List<Rule> rules = Lists.newArrayList();
        rules.add(new Rule(RuleType.EXT_EQ, "pdf", "/pdf", 0, u.getKey()));
        rules.add(new Rule(RuleType.GLOB, "a*", "/a", 1, u.getKey()));
        rules.add(new Rule(RuleType.NAME_CONTAINS, "foo", "/foo", 2, u.getKey()));
        Rule.replace(u, rules, null);
        List<Rule> actual = Rule.findByUserId(u.getKey());
        assertEquals(actual, rules);
       
        rules.remove(rules.size() - 1);
        rules.set(1, new Rule(RuleType.GLOB, "b*", "/b", 3, u.getKey()));
        Cache.set(Rule.cacheKey(u.getKey()), rules);
        actual = Rule.findByUserId(u.getKey());
        assertEquals(actual, rules);
    }
}
TOP

Related Classes of unit.models.RuleTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.