Loading services/core/java/com/android/server/integrity/model/OpenFormula.java +14 −25 Original line number Diff line number Diff line Loading @@ -16,9 +16,11 @@ package com.android.server.integrity.model; import static com.android.internal.util.Preconditions.checkArgument; import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.Nullable; import java.util.Collections; import java.util.List; /** * Represents a complex formula consisting of other simple and complex formulas. Loading @@ -34,46 +36,33 @@ public final class OpenFormula extends Formula { } private final Connector mConnector; private final Formula mMainFormula; private final Formula mAuxiliaryFormula; private final List<Formula> mFormulas; public OpenFormula(Connector connector, Formula mainFormula, @Nullable Formula auxiliaryFormula) { validateAuxiliaryFormula(connector, auxiliaryFormula); public OpenFormula(Connector connector, List<Formula> formulas) { validateFormulas(connector, formulas); this.mConnector = checkNotNull(connector); this.mMainFormula = checkNotNull(mainFormula); // TODO: Add validators on auxiliary formula this.mAuxiliaryFormula = auxiliaryFormula; this.mFormulas = Collections.unmodifiableList(checkNotNull(formulas)); } public Connector getConnector() { return mConnector; } public Formula getMainFormula() { return mMainFormula; public List<Formula> getFormulas() { return mFormulas; } public Formula getAuxiliaryFormula() { return mAuxiliaryFormula; } private void validateAuxiliaryFormula(Connector connector, Formula auxiliaryFormula) { boolean validAuxiliaryFormula; private void validateFormulas(Connector connector, List<Formula> formulas) { switch (connector) { case AND: case OR: validAuxiliaryFormula = (auxiliaryFormula != null); checkArgument(formulas.size() >= 2, String.format("Connector %s must have at least 2 formulas", connector)); break; case NOT: validAuxiliaryFormula = (auxiliaryFormula == null); checkArgument(formulas.size() == 1, String.format("Connector %s must have 1 formula only", connector)); break; default: validAuxiliaryFormula = false; } if (!validAuxiliaryFormula) { throw new IllegalArgumentException( String.format("Invalid formulas used for connector %s", connector)); } } } services/tests/servicestests/src/com/android/server/integrity/model/OpenFormulaTest.java +13 −10 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.util.Arrays; import java.util.Collections; @RunWith(JUnit4.class) public class OpenFormulaTest { Loading @@ -34,12 +37,11 @@ public class OpenFormulaTest { @Test public void testValidOpenFormula() { OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND, ATOMIC_FORMULA_1, ATOMIC_FORMULA_2); OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2)); assertEquals(OpenFormula.Connector.AND, openFormula.getConnector()); assertEquals(ATOMIC_FORMULA_1, openFormula.getMainFormula()); assertEquals(ATOMIC_FORMULA_2, openFormula.getAuxiliaryFormula()); assertEquals(Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2), openFormula.getFormulas()); } @Test Loading @@ -47,9 +49,10 @@ public class OpenFormulaTest { assertExpectException( IllegalArgumentException.class, /* expectedExceptionMessageRegex */ String.format("Invalid formulas used for connector %s", OpenFormula.Connector.AND), () -> new OpenFormula(OpenFormula.Connector.AND, ATOMIC_FORMULA_1, null)); String.format("Connector %s must have at least 2 formulas", OpenFormula.Connector.AND), () -> new OpenFormula(OpenFormula.Connector.AND, Collections.singletonList(ATOMIC_FORMULA_1))); } @Test Loading @@ -57,8 +60,8 @@ public class OpenFormulaTest { assertExpectException( IllegalArgumentException.class, /* expectedExceptionMessageRegex */ String.format("Invalid formulas used for connector %s", OpenFormula.Connector.NOT), () -> new OpenFormula(OpenFormula.Connector.NOT, ATOMIC_FORMULA_1, ATOMIC_FORMULA_2)); String.format("Connector %s must have 1 formula only", OpenFormula.Connector.NOT), () -> new OpenFormula(OpenFormula.Connector.NOT, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2))); } } Loading
services/core/java/com/android/server/integrity/model/OpenFormula.java +14 −25 Original line number Diff line number Diff line Loading @@ -16,9 +16,11 @@ package com.android.server.integrity.model; import static com.android.internal.util.Preconditions.checkArgument; import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.Nullable; import java.util.Collections; import java.util.List; /** * Represents a complex formula consisting of other simple and complex formulas. Loading @@ -34,46 +36,33 @@ public final class OpenFormula extends Formula { } private final Connector mConnector; private final Formula mMainFormula; private final Formula mAuxiliaryFormula; private final List<Formula> mFormulas; public OpenFormula(Connector connector, Formula mainFormula, @Nullable Formula auxiliaryFormula) { validateAuxiliaryFormula(connector, auxiliaryFormula); public OpenFormula(Connector connector, List<Formula> formulas) { validateFormulas(connector, formulas); this.mConnector = checkNotNull(connector); this.mMainFormula = checkNotNull(mainFormula); // TODO: Add validators on auxiliary formula this.mAuxiliaryFormula = auxiliaryFormula; this.mFormulas = Collections.unmodifiableList(checkNotNull(formulas)); } public Connector getConnector() { return mConnector; } public Formula getMainFormula() { return mMainFormula; public List<Formula> getFormulas() { return mFormulas; } public Formula getAuxiliaryFormula() { return mAuxiliaryFormula; } private void validateAuxiliaryFormula(Connector connector, Formula auxiliaryFormula) { boolean validAuxiliaryFormula; private void validateFormulas(Connector connector, List<Formula> formulas) { switch (connector) { case AND: case OR: validAuxiliaryFormula = (auxiliaryFormula != null); checkArgument(formulas.size() >= 2, String.format("Connector %s must have at least 2 formulas", connector)); break; case NOT: validAuxiliaryFormula = (auxiliaryFormula == null); checkArgument(formulas.size() == 1, String.format("Connector %s must have 1 formula only", connector)); break; default: validAuxiliaryFormula = false; } if (!validAuxiliaryFormula) { throw new IllegalArgumentException( String.format("Invalid formulas used for connector %s", connector)); } } }
services/tests/servicestests/src/com/android/server/integrity/model/OpenFormulaTest.java +13 −10 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.util.Arrays; import java.util.Collections; @RunWith(JUnit4.class) public class OpenFormulaTest { Loading @@ -34,12 +37,11 @@ public class OpenFormulaTest { @Test public void testValidOpenFormula() { OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND, ATOMIC_FORMULA_1, ATOMIC_FORMULA_2); OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2)); assertEquals(OpenFormula.Connector.AND, openFormula.getConnector()); assertEquals(ATOMIC_FORMULA_1, openFormula.getMainFormula()); assertEquals(ATOMIC_FORMULA_2, openFormula.getAuxiliaryFormula()); assertEquals(Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2), openFormula.getFormulas()); } @Test Loading @@ -47,9 +49,10 @@ public class OpenFormulaTest { assertExpectException( IllegalArgumentException.class, /* expectedExceptionMessageRegex */ String.format("Invalid formulas used for connector %s", OpenFormula.Connector.AND), () -> new OpenFormula(OpenFormula.Connector.AND, ATOMIC_FORMULA_1, null)); String.format("Connector %s must have at least 2 formulas", OpenFormula.Connector.AND), () -> new OpenFormula(OpenFormula.Connector.AND, Collections.singletonList(ATOMIC_FORMULA_1))); } @Test Loading @@ -57,8 +60,8 @@ public class OpenFormulaTest { assertExpectException( IllegalArgumentException.class, /* expectedExceptionMessageRegex */ String.format("Invalid formulas used for connector %s", OpenFormula.Connector.NOT), () -> new OpenFormula(OpenFormula.Connector.NOT, ATOMIC_FORMULA_1, ATOMIC_FORMULA_2)); String.format("Connector %s must have 1 formula only", OpenFormula.Connector.NOT), () -> new OpenFormula(OpenFormula.Connector.NOT, Arrays.asList(ATOMIC_FORMULA_1, ATOMIC_FORMULA_2))); } }