@@ -7140,6 +7140,165 @@ public void testQueryEdgeWithNullablePropertyInCompositeIndex() {
71407140 Assert .assertEquals (1 , (int ) el .get (0 ).value ("id" ));
71417141 }
71427142
7143+ @ Test
7144+ public void testQueryEdgeByBooleanRangePredicate () {
7145+ HugeGraph graph = graph ();
7146+ initStrikeIndex ();
7147+ graph .schema ().indexLabel ("strikeByArrested" ).onE ("strike" ).secondary ()
7148+ .by ("arrested" ).create ();
7149+
7150+ Vertex louise = graph .addVertex (T .label , "person" , "name" , "Louise" ,
7151+ "city" , "Beijing" , "age" , 21 );
7152+ Vertex sean = graph .addVertex (T .label , "person" , "name" , "Sean" ,
7153+ "city" , "Beijing" , "age" , 23 );
7154+ long current = System .currentTimeMillis ();
7155+ louise .addEdge ("strike" , sean , "id" , 1 ,
7156+ "timestamp" , current , "place" , "park" ,
7157+ "tool" , "shovel" , "reason" , "jeer" ,
7158+ "arrested" , false );
7159+ louise .addEdge ("strike" , sean , "id" , 2 ,
7160+ "timestamp" , current + 1 , "place" , "street" ,
7161+ "tool" , "shovel" , "reason" , "jeer" ,
7162+ "arrested" , true );
7163+
7164+ List <Edge > hasLtEdges = graph .traversal ().E ()
7165+ .has ("arrested" , P .lt (true ))
7166+ .toList ();
7167+ Assert .assertEquals (1 , hasLtEdges .size ());
7168+ Assert .assertEquals (1 , (int ) hasLtEdges .get (0 ).value ("id" ));
7169+
7170+ List <Edge > whereEdges = graph .traversal ().E ()
7171+ .where (__ .has ("arrested" , P .lt (true )))
7172+ .toList ();
7173+ Assert .assertEquals (1 , whereEdges .size ());
7174+ Assert .assertEquals (1 , (int ) whereEdges .get (0 ).value ("id" ));
7175+
7176+ List <Edge > matchEdges = graph .traversal ().E ()
7177+ .match (__ .as ("start" )
7178+ .where (__ .has ("arrested" ,
7179+ P .lt (true )))
7180+ .as ("matched" ))
7181+ .<Edge >select ("matched" )
7182+ .toList ();
7183+ Assert .assertEquals (1 , matchEdges .size ());
7184+ Assert .assertEquals (1 , (int ) matchEdges .get (0 ).value ("id" ));
7185+
7186+ List <Edge > hasNeqTrueEdges = graph .traversal ().E ()
7187+ .has ("arrested" , P .neq (true ))
7188+ .toList ();
7189+ Assert .assertEquals (1 , hasNeqTrueEdges .size ());
7190+ Assert .assertEquals (1 , (int ) hasNeqTrueEdges .get (0 ).value ("id" ));
7191+
7192+ List <Edge > hasNeqFalseEdges = graph .traversal ().E ()
7193+ .has ("arrested" , P .neq (false ))
7194+ .toList ();
7195+ Assert .assertEquals (1 , hasNeqFalseEdges .size ());
7196+ Assert .assertEquals (2 , (int ) hasNeqFalseEdges .get (0 ).value ("id" ));
7197+
7198+ List <Edge > hasLteFalseEdges = graph .traversal ().E ()
7199+ .has ("arrested" , P .lte (false ))
7200+ .toList ();
7201+ Assert .assertEquals (1 , hasLteFalseEdges .size ());
7202+ Assert .assertEquals (1 , (int ) hasLteFalseEdges .get (0 ).value ("id" ));
7203+
7204+ List <Edge > hasGtFalseEdges = graph .traversal ().E ()
7205+ .has ("arrested" , P .gt (false ))
7206+ .toList ();
7207+ Assert .assertEquals (1 , hasGtFalseEdges .size ());
7208+ Assert .assertEquals (2 , (int ) hasGtFalseEdges .get (0 ).value ("id" ));
7209+
7210+ List <Edge > hasGteTrueEdges = graph .traversal ().E ()
7211+ .has ("arrested" , P .gte (true ))
7212+ .toList ();
7213+ Assert .assertEquals (1 , hasGteTrueEdges .size ());
7214+ Assert .assertEquals (2 , (int ) hasGteTrueEdges .get (0 ).value ("id" ));
7215+
7216+ List <Edge > hasGteFalseEdges = graph .traversal ().E ()
7217+ .has ("arrested" , P .gte (false ))
7218+ .toList ();
7219+ Assert .assertEquals (2 , hasGteFalseEdges .size ());
7220+ Set <Integer > gteFalseIds = new HashSet <>();
7221+ for (Edge edge : hasGteFalseEdges ) {
7222+ gteFalseIds .add (edge .value ("id" ));
7223+ }
7224+ Assert .assertEquals (ImmutableSet .of (1 , 2 ), gteFalseIds );
7225+
7226+ List <Edge > hasLteTrueEdges = graph .traversal ().E ()
7227+ .has ("arrested" , P .lte (true ))
7228+ .toList ();
7229+ Assert .assertEquals (2 , hasLteTrueEdges .size ());
7230+ Set <Integer > lteTrueIds = new HashSet <>();
7231+ for (Edge edge : hasLteTrueEdges ) {
7232+ lteTrueIds .add (edge .value ("id" ));
7233+ }
7234+ Assert .assertEquals (ImmutableSet .of (1 , 2 ), lteTrueIds );
7235+
7236+ Assert .assertEquals (0 , graph .traversal ().E ()
7237+ .has ("arrested" , P .lt (false ))
7238+ .toList ().size ());
7239+ Assert .assertEquals (0 , graph .traversal ().E ()
7240+ .has ("arrested" , P .gt (true ))
7241+ .toList ().size ());
7242+ }
7243+
7244+ @ Test
7245+ public void testQueryEdgeByBooleanRangePredicateWithoutNullableProperty () {
7246+ HugeGraph graph = graph ();
7247+ initStrikeIndex ();
7248+ graph .schema ().indexLabel ("strikeByHurt" ).onE ("strike" ).secondary ()
7249+ .by ("hurt" ).create ();
7250+
7251+ Vertex louise = graph .addVertex (T .label , "person" , "name" , "Louise" ,
7252+ "city" , "Beijing" , "age" , 21 );
7253+ Vertex sean = graph .addVertex (T .label , "person" , "name" , "Sean" ,
7254+ "city" , "Beijing" , "age" , 23 );
7255+ long current = System .currentTimeMillis ();
7256+ louise .addEdge ("strike" , sean , "id" , 1 ,
7257+ "timestamp" , current , "place" , "park" ,
7258+ "tool" , "shovel" , "reason" , "jeer" ,
7259+ "hurt" , false , "arrested" , false );
7260+ louise .addEdge ("strike" , sean , "id" , 2 ,
7261+ "timestamp" , current + 1 , "place" , "street" ,
7262+ "tool" , "shovel" , "reason" , "jeer" ,
7263+ "hurt" , true , "arrested" , true );
7264+ louise .addEdge ("strike" , sean , "id" , 3 ,
7265+ "timestamp" , current + 2 , "place" , "mall" ,
7266+ "tool" , "shovel" , "reason" , "jeer" ,
7267+ "arrested" , false );
7268+
7269+ List <Edge > gteFalseEdges = graph .traversal ().E ()
7270+ .has ("hurt" , P .gte (false ))
7271+ .toList ();
7272+ Assert .assertEquals (2 , gteFalseEdges .size ());
7273+ Set <Integer > gteFalseIds = new HashSet <>();
7274+ for (Edge edge : gteFalseEdges ) {
7275+ gteFalseIds .add (edge .value ("id" ));
7276+ }
7277+ Assert .assertEquals (ImmutableSet .of (1 , 2 ), gteFalseIds );
7278+
7279+ List <Edge > lteTrueEdges = graph .traversal ().E ()
7280+ .has ("hurt" , P .lte (true ))
7281+ .toList ();
7282+ Assert .assertEquals (2 , lteTrueEdges .size ());
7283+ Set <Integer > lteTrueIds = new HashSet <>();
7284+ for (Edge edge : lteTrueEdges ) {
7285+ lteTrueIds .add (edge .value ("id" ));
7286+ }
7287+ Assert .assertEquals (ImmutableSet .of (1 , 2 ), lteTrueIds );
7288+
7289+ List <Edge > lteFalseEdges = graph .traversal ().E ()
7290+ .has ("hurt" , P .lte (false ))
7291+ .toList ();
7292+ Assert .assertEquals (1 , lteFalseEdges .size ());
7293+ Assert .assertEquals (1 , (int ) lteFalseEdges .get (0 ).value ("id" ));
7294+
7295+ List <Edge > neqTrueEdges = graph .traversal ().E ()
7296+ .has ("hurt" , P .neq (true ))
7297+ .toList ();
7298+ Assert .assertEquals (1 , neqTrueEdges .size ());
7299+ Assert .assertEquals (1 , (int ) neqTrueEdges .get (0 ).value ("id" ));
7300+ }
7301+
71437302 @ Test
71447303 public void testQueryEdgeByPage () {
71457304 Assume .assumeTrue ("Not support paging" ,
0 commit comments