Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f878cb5 authored by Khaled Abdelmohsen's avatar Khaled Abdelmohsen
Browse files

Implement toString for rule components

Bug: 141979167
Test: atest FrameworksServicesTests:RuleTest
Change-Id: I7538c217ecc9c37492fb9508f346e046061ee362
parent 75ab96a8
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -112,6 +112,26 @@ public final class AtomicFormula extends Formula {
        return mBoolValue;
        return mBoolValue;
    }
    }


    /**
     * Get string representation of the value of the key in the formula.
     *
     * @return string representation of the value of the key.
     */
    public String getValue() {
        if (mStringValue != null) {
            return mStringValue;
        }
        if (mIntValue != null) {
            return mIntValue.toString();
        }
        return mBoolValue.toString();
    }

    @Override
    public String toString() {
        return String.format("%s %s %s", mKey, mOperator, getValue());
    }

    private void validateOperator(Key key, Operator operator) {
    private void validateOperator(Key key, Operator operator) {
        boolean validOperator;
        boolean validOperator;
        switch (key) {
        switch (key) {
+12 −0
Original line number Original line Diff line number Diff line
@@ -52,6 +52,18 @@ public final class OpenFormula extends Formula {
        return mFormulas;
        return mFormulas;
    }
    }


    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mFormulas.size(); i++) {
            if (i > 0) {
                sb.append(String.format(" %s ", mConnector));
            }
            sb.append(mFormulas.get(i).toString());
        }
        return sb.toString();
    }

    private void validateFormulas(Connector connector, List<Formula> formulas) {
    private void validateFormulas(Connector connector, List<Formula> formulas) {
        switch (connector) {
        switch (connector) {
            case AND:
            case AND:
+5 −0
Original line number Original line Diff line number Diff line
@@ -61,4 +61,9 @@ public final class Rule {
    public Effect getEffect() {
    public Effect getEffect() {
        return mEffect;
        return mEffect;
    }
    }

    @Override
    public String toString() {
        return String.format("Rule: %s, %s", mFormula, mEffect);
    }
}
}
+24 −5
Original line number Original line Diff line number Diff line
@@ -25,13 +25,20 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.runners.JUnit4;


import java.util.Arrays;

@RunWith(JUnit4.class)
@RunWith(JUnit4.class)
public class RuleTest {
public class RuleTest {


    private static final Rule.Effect DENY_EFFECT = Rule.Effect.DENY;
    private static final Rule.Effect DENY_EFFECT = Rule.Effect.DENY;
    private static final Formula SIMPLE_FORMULA =
    private static final String PACKAGE_NAME = "com.test.app";
    private static final String APP_CERTIFICATE = "test_cert";
    private static final Formula PACKAGE_NAME_ATOMIC_FORMULA =
            new AtomicFormula(AtomicFormula.Key.PACKAGE_NAME, AtomicFormula.Operator.EQ,
            new AtomicFormula(AtomicFormula.Key.PACKAGE_NAME, AtomicFormula.Operator.EQ,
                    "com.test.app");
                    PACKAGE_NAME);
    private static final Formula APP_CERTIFICATE_ATOMIC_FORMULA =
            new AtomicFormula(AtomicFormula.Key.APP_CERTIFICATE, AtomicFormula.Operator.EQ,
                    APP_CERTIFICATE);


    @Test
    @Test
    public void testEmptyRule() {
    public void testEmptyRule() {
@@ -43,9 +50,9 @@ public class RuleTest {


    @Test
    @Test
    public void testValidRule() {
    public void testValidRule() {
        Rule validRule = new Rule(SIMPLE_FORMULA, DENY_EFFECT);
        Rule validRule = new Rule(PACKAGE_NAME_ATOMIC_FORMULA, DENY_EFFECT);


        assertEquals(SIMPLE_FORMULA, validRule.getFormula());
        assertEquals(PACKAGE_NAME_ATOMIC_FORMULA, validRule.getFormula());
        assertEquals(DENY_EFFECT, validRule.getEffect());
        assertEquals(DENY_EFFECT, validRule.getEffect());
    }
    }


@@ -54,7 +61,7 @@ public class RuleTest {
        assertExpectException(
        assertExpectException(
                NullPointerException.class,
                NullPointerException.class,
                /* expectedExceptionMessageRegex */ null,
                /* expectedExceptionMessageRegex */ null,
                () -> new Rule(SIMPLE_FORMULA, null));
                () -> new Rule(PACKAGE_NAME_ATOMIC_FORMULA, null));
    }
    }


    @Test
    @Test
@@ -64,4 +71,16 @@ public class RuleTest {
                /* expectedExceptionMessageRegex */ null,
                /* expectedExceptionMessageRegex */ null,
                () -> new Rule(null, DENY_EFFECT));
                () -> new Rule(null, DENY_EFFECT));
    }
    }

    @Test
    public void testToString() {
        OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND,
                Arrays.asList(PACKAGE_NAME_ATOMIC_FORMULA, APP_CERTIFICATE_ATOMIC_FORMULA));
        Rule rule = new Rule(openFormula, Rule.Effect.DENY);

        String toString = rule.toString();

        assertEquals(String.format("Rule: PACKAGE_NAME EQ %s AND APP_CERTIFICATE EQ %s, DENY",
                PACKAGE_NAME, APP_CERTIFICATE), toString);
    }
}
}