Skip to content

Commit 36ee78d

Browse files
authored
Add test coverage for Painless general casting of boolean and Boolean (#37780)
This adds test coverage for general casts in Painless between boolean and other types and Boolean and other types.
1 parent 5433af2 commit 36ee78d

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed

modules/lang-painless/src/test/java/org/elasticsearch/painless/StandardCastTests.java

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,4 +641,158 @@ public void testStringCasts() {
641641
expectScriptThrows(ClassCastException.class, () -> exec("String o = 'string'; ArrayList b = o;"));
642642
expectScriptThrows(ClassCastException.class, () -> exec("String o = 'string'; ArrayList b = (ArrayList)o;"));
643643
}
644+
645+
public void testPrimitiveBooleanCasts() {
646+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Object n = o;"));
647+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Object n = (Object)o;"));
648+
649+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Number n = o;"));
650+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Number n = (boolean)o;"));
651+
652+
exec("boolean o = true; boolean b = o;");
653+
exec("boolean o = true; boolean b = (boolean)o;");
654+
655+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; byte b = o;"));
656+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; byte b = (byte)o;"));
657+
658+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; short b = o;"));
659+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; short b = (short)o;"));
660+
661+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; char b = o;"));
662+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; char b = (char)o;"));
663+
664+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; int b = o;"));
665+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; int b = (int)o;"));
666+
667+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; long b = o;"));
668+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; long b = (long)o;"));
669+
670+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; float b = o;"));
671+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; float b = (float)o;"));
672+
673+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; double b = o;"));
674+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; double b = (double)o;"));
675+
676+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Boolean b = o;"));
677+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Boolean b = (Boolean)o;"));
678+
679+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Byte b = o;"));
680+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Byte b = (Byte)o;"));
681+
682+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Short b = o;"));
683+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Short b = (Short)o;"));
684+
685+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Character b = o;"));
686+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Character b = (Character)o;"));
687+
688+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Integer b = o;"));
689+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Integer b = (Integer)o;"));
690+
691+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Long b = o;"));
692+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Long b = (Long)o;"));
693+
694+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Float b = o;"));
695+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Float b = (Float)o;"));
696+
697+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Double b = o;"));
698+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; Double b = (Double)o;"));
699+
700+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; ArrayList b = o;"));
701+
expectScriptThrows(ClassCastException.class, () -> exec("boolean o = true; ArrayList b = (ArrayList)o;"));
702+
}
703+
704+
public void testBoxedBooleanCasts() {
705+
exec("Boolean o = Boolean.valueOf(true); Object n = o;");
706+
exec("Boolean o = null; Object n = o;");
707+
exec("Boolean o = Boolean.valueOf(true); Object n = (Object)o;");
708+
exec("Boolean o = null; Object n = (Object)o;");
709+
710+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Number n = o;"));
711+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Number n = o;"));
712+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Number n = (Boolean)o;"));
713+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Number n = (Boolean)o;"));
714+
715+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); boolean b = o;"));
716+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; boolean b = o;"));
717+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); boolean b = (boolean)o;"));
718+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; boolean b = (boolean)o;"));
719+
720+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); byte b = o;"));
721+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; byte b = o;"));
722+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); byte b = (byte)o;"));
723+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; byte b = (byte)o;"));
724+
725+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); short b = o;"));
726+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; short b = o;"));
727+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); short b = (short)o;"));
728+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; short b = (short)o;"));
729+
730+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); char b = o;"));
731+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; char b = o;"));
732+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); char b = (char)o;"));
733+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; char b = (char)o;"));
734+
735+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); int b = o;"));
736+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; int b = o;"));
737+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); int b = (int)o;"));
738+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; int b = (int)o;"));
739+
740+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); long b = o;"));
741+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; long b = o;"));
742+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); long b = (long)o;"));
743+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; long b = (long)o;"));
744+
745+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); float b = o;"));
746+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; float b = o;"));
747+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); float b = (float)o;"));
748+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; float b = (float)o;"));
749+
750+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); double b = o;"));
751+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; double b = o;"));
752+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); double b = (double)o;"));
753+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; double b = (double)o;"));
754+
755+
exec("Boolean o = Boolean.valueOf(true); Boolean b = o;");
756+
exec("Boolean o = null; Boolean b = o;");
757+
exec("Boolean o = Boolean.valueOf(true); Boolean b = (Boolean)o;");
758+
exec("Boolean o = null; Boolean b = (Boolean)o;");
759+
760+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Byte b = o;"));
761+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Byte b = o;"));
762+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Byte b = (Byte)o;"));
763+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Byte b = (Byte)o;"));
764+
765+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Short b = o;"));
766+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Short b = o;"));
767+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Short b = (Short)o;"));
768+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Short b = (Short)o;"));
769+
770+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Character b = o;"));
771+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Character b = o;"));
772+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Character b = (Character)o;"));
773+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Character b = (Character)o;"));
774+
775+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Integer b = o;"));
776+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Integer b = o;"));
777+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Integer b = (Integer)o;"));
778+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Integer b = (Integer)o;"));
779+
780+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Long b = o;"));
781+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Long b = o;"));
782+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Long b = (Long)o;"));
783+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Long b = (Long)o;"));
784+
785+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Float b = o;"));
786+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Float b = o;"));
787+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Float b = (Float)o;"));
788+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Float b = (Float)o;"));
789+
790+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Double b = o;"));
791+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Double b = o;"));
792+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); Double b = (Double)o;"));
793+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = null; Double b = (Double)o;"));
794+
795+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); ArrayList b = o;"));
796+
expectScriptThrows(ClassCastException.class, () -> exec("Boolean o = Boolean.valueOf(true); ArrayList b = (ArrayList)o;"));
797+
}
644798
}

0 commit comments

Comments
 (0)