@@ -583,6 +583,83 @@ public void testRunStructuredQuery() throws InterruptedException {
583
583
assertFalse (results4 .hasNext ());
584
584
}
585
585
586
+ @ Test
587
+ public void testInNotInNeqFilters () throws InterruptedException {
588
+ Entity e1 =
589
+ Entity .newBuilder (ENTITY1 )
590
+ .setKey (Key .newBuilder (INCOMPLETE_KEY1 , "e1" ).build ())
591
+ .set ("v_int" , 10 )
592
+ .build ();
593
+ Entity e2 =
594
+ Entity .newBuilder (ENTITY1 )
595
+ .setKey (Key .newBuilder (INCOMPLETE_KEY1 , "e2" ).build ())
596
+ .set ("v_int" , 20 )
597
+ .build ();
598
+ DATASTORE .put (e1 , e2 );
599
+
600
+ Query <Entity > queryIn =
601
+ Query .newEntityQueryBuilder ()
602
+ .setKind (KIND1 )
603
+ .setFilter (PropertyFilter .in ("v_int" , ListValue .of (10 , 20 )))
604
+ .build ();
605
+
606
+ Query <Entity > scQueryIn =
607
+ Query .newEntityQueryBuilder ()
608
+ .setKind (KIND1 )
609
+ .setFilter (PropertyFilter .hasAncestor (ROOT_KEY ))
610
+ .setFilter (PropertyFilter .in ("v_int" , ListValue .of (10 , 20 )))
611
+ .build ();
612
+
613
+ Iterator <Entity > resultIn = getStronglyConsistentResults (scQueryIn , queryIn );
614
+
615
+ assertTrue (resultIn .hasNext ());
616
+ assertEquals (e1 , resultIn .next ());
617
+ assertTrue (resultIn .hasNext ());
618
+ assertEquals (e2 , resultIn .next ());
619
+ assertFalse (resultIn .hasNext ());
620
+
621
+ Query <Entity > queryNotIn =
622
+ Query .newEntityQueryBuilder ()
623
+ .setKind (KIND1 )
624
+ .setFilter (PropertyFilter .not_in ("v_int" , ListValue .of (20 , 30 )))
625
+ .build ();
626
+
627
+ Query <Entity > scQueryNotIn =
628
+ Query .newEntityQueryBuilder ()
629
+ .setKind (KIND1 )
630
+ .setFilter (PropertyFilter .hasAncestor (ROOT_KEY ))
631
+ .setFilter (PropertyFilter .not_in ("v_int" , ListValue .of (20 , 30 )))
632
+ .build ();
633
+
634
+ Iterator <Entity > resultNotIn = getStronglyConsistentResults (scQueryNotIn , queryNotIn );
635
+
636
+ assertTrue (resultNotIn .hasNext ());
637
+ assertEquals (e1 , resultNotIn .next ());
638
+ assertFalse (resultNotIn .hasNext ());
639
+
640
+ Query <Entity > queryNeq =
641
+ Query .newEntityQueryBuilder ()
642
+ .setKind (KIND1 )
643
+ .setFilter (PropertyFilter .neq ("v_int" , 10 ))
644
+ .build ();
645
+
646
+ Query <Entity > scQueryNeq =
647
+ Query .newEntityQueryBuilder ()
648
+ .setKind (KIND1 )
649
+ .setFilter (PropertyFilter .hasAncestor (ROOT_KEY ))
650
+ .setFilter (PropertyFilter .neq ("v_int" , 10 ))
651
+ .build ();
652
+
653
+ Iterator <Entity > resultNeq = getStronglyConsistentResults (scQueryNeq , queryNeq );
654
+
655
+ assertTrue (resultNeq .hasNext ());
656
+ assertEquals (e2 , resultNeq .next ());
657
+ assertFalse (resultNeq .hasNext ());
658
+
659
+ DATASTORE .delete (e1 .getKey ());
660
+ DATASTORE .delete (e2 .getKey ());
661
+ }
662
+
586
663
@ Test
587
664
public void testAllocateId () {
588
665
KeyFactory keyFactory = DATASTORE .newKeyFactory ().setKind (KIND1 );
0 commit comments