Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
guillaume-dequenne-sonarsource committed Jul 24, 2024
1 parent 81d7bfd commit ce26c8f
Showing 1 changed file with 22 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@ void orTest() {
ObjectType intLiteralType = (ObjectType) intLiteral.typeV2();
assertThat(intLiteralType.unwrappedType()).isEqualTo(INT_TYPE);

assertThat(typeCheckerContext.or(
typeCheckerContext.typeChecker().isBuiltinWithName("int"),
typeCheckerContext.typeChecker().isBuiltinWithName("str")
).check(intLiteralType)).isEqualTo(TriBool.TRUE);

assertThat(typeCheckerContext.typeChecker().isBuiltinWithName("str").or(
typeCheckerContext.typeChecker().isBuiltinWithName("int")
).check(intLiteralType)).isEqualTo(TriBool.TRUE);
Expand All @@ -123,6 +128,11 @@ void andTest() {
NumericLiteral intLiteral = (NumericLiteral) TreeUtils.firstChild(fileInput, t -> t.is(Tree.Kind.NUMERIC_LITERAL)).get();
ObjectType intLiteralType = (ObjectType) intLiteral.typeV2();

assertThat(typeCheckerContext.and(
typeCheckerContext.typeChecker().isBuiltinWithName("int"),
typeCheckerContext.typeChecker().isBuiltinWithName("str")
).check(intLiteralType)).isEqualTo(TriBool.FALSE);

TypeChecker isIntAndStr = typeCheckerContext.typeChecker().isBuiltinWithName("int").isBuiltinWithName("str");
TypeChecker isStrAndInt = typeCheckerContext.typeChecker().isBuiltinWithName("str").isBuiltinWithName("int");
TypeChecker isIntAndHasMemberAbs = typeCheckerContext.typeChecker().isBuiltinWithName("int").hasMember("__abs__");
Expand All @@ -143,10 +153,22 @@ void andTest() {
TypeChecker trueOr2 = isIntAndHasMemberAbs.or(isStrAndInt);
TypeChecker trueOr3 = isIntAndHasMemberAbs.or(isUnknownAndHasMemberFloat);
TypeChecker trueOr4 = isUnknownAndHasMemberFloat.or(isIntAndHasMemberAbs);
TypeChecker unknownOr = isUnknownAndHasMemberFloat.or(isIntAndStr);
TypeChecker falseOr = isStrAndInt.or(isIntAndStr);

assertThat(trueOr1.check(intLiteralType)).isEqualTo(TriBool.TRUE);
assertThat(trueOr2.check(intLiteralType)).isEqualTo(TriBool.TRUE);
assertThat(trueOr3.check(intLiteralType)).isEqualTo(TriBool.TRUE);
assertThat(trueOr4.check(intLiteralType)).isEqualTo(TriBool.TRUE);

assertThat(unknownOr.check(intLiteralType)).isEqualTo(TriBool.UNKNOWN);
assertThat(falseOr.check(intLiteralType)).isEqualTo(TriBool.FALSE);

assertThat(trueOr1.or(isIntAndStr).check(intLiteralType)).isEqualTo(TriBool.TRUE);
assertThat(trueOr1.or(trueOr2).check(intLiteralType)).isEqualTo(TriBool.TRUE);

assertThat(trueOr1.and(isIntAndHasMemberAbs).check(intLiteralType)).isEqualTo(TriBool.TRUE);
assertThat(trueOr1.and(isUnknownAndHasMemberFloat).check(intLiteralType)).isEqualTo(TriBool.UNKNOWN);
assertThat(trueOr1.and(isIntAndStr).check(intLiteralType)).isEqualTo(TriBool.FALSE);
}
}

0 comments on commit ce26c8f

Please sign in to comment.