package edu.neu.ccs.evergreen.ir;
import static org.junit.Assert.*;
import org.junit.Test;
public class RelationCoreIrrelevantVariables {
int maxRank = RelationCore.MaxRank;
@Test
public final void testIsIrrelevant() {
for(int rank=1;rank<=maxRank;rank++){
for(int variablePosition=0;variablePosition<rank;variablePosition++){
for(int value=0;value<=1;value++){
int relationNumber = RelationCore.getMagicNumber(rank, variablePosition, value);
for(int otherVariablePosition=0;otherVariablePosition<rank;otherVariablePosition++){
if(otherVariablePosition==variablePosition) continue;
assertTrue(RelationCore.isIrrelevant(relationNumber, rank, otherVariablePosition));
}
}
}
}
for(int rank=1;rank<=maxRank;rank++){
for(int variablePosition=0;variablePosition<rank;variablePosition++){
int r1 = 0;
int r2 = RelationCore.getMask(rank);
assertTrue(RelationCore.isIrrelevant(r1, rank, variablePosition));
assertTrue(RelationCore.isIrrelevant(r2, rank, variablePosition));
}
}
}
@Test
public final void testNumberOfRelevantVariables() {
for(int rank=1;rank<=maxRank;rank++){
for(int variablePosition=0;variablePosition<rank;variablePosition++){
for(int value=0;value<=1;value++){
int relationNumber = RelationCore.getMagicNumber(rank, variablePosition, value);
assertTrue(RelationCore.numberOfRelevantVariables(relationNumber, rank)==1);
}
}
}
for(int rank=1;rank<=maxRank;rank++){
int r1 = 0;
int r2 = RelationCore.getMask(rank);
assertTrue(RelationCore.numberOfRelevantVariables(r1, rank)==0);
assertTrue(RelationCore.numberOfRelevantVariables(r2, rank)==0);
}
}
}