@@ -700,4 +700,59 @@ private static async Task<List<T>> QueryByInterfaceBase<T>(string pid, bool notI
700700        var  users  =  await  kv . GetListAsync ( pid ,  expr ) . ToListAsync ( ) ; 
701701        return  users ; 
702702    } 
703+ 
704+     [ TestMethod ] 
705+     public  async  Task  FilterByIsNullOrWhiteSpaceTest ( ) 
706+     { 
707+         var  key1  =  nameof ( FilterByIsNullOrWhiteSpaceTest )  +  "1" ; 
708+         var  key2  =  nameof ( FilterByIsNullOrWhiteSpaceTest )  +  "2" ; 
709+         var  key3  =  nameof ( FilterByIsNullOrWhiteSpaceTest )  +  "3" ; 
710+         var  key4  =  nameof ( FilterByIsNullOrWhiteSpaceTest )  +  "4" ; 
711+         var  pid  =  nameof ( FilterByIsNullOrWhiteSpaceTest ) ; 
712+ 
713+         var  user1  =  new  UserProfile 
714+         { 
715+             Name  =  "Alice" , 
716+             DisplayName  =  "Alice Smith" 
717+         } ; 
718+ 
719+         var  user2  =  new  UserProfile 
720+         { 
721+             Name  =  "Bob" , 
722+             DisplayName  =  null  // null value 
723+         } ; 
724+ 
725+         var  user3  =  new  UserProfile 
726+         { 
727+             Name  =  "Charlie" , 
728+             DisplayName  =  ""  // empty string 
729+         } ; 
730+ 
731+         var  user4  =  new  UserProfile 
732+         { 
733+             Name  =  "David" , 
734+             DisplayName  =  "   "  // whitespace only 
735+         } ; 
736+ 
737+         await  kv . UpsertAsync ( key1 ,  user1 ,  pid ) ; 
738+         await  kv . UpsertAsync ( key2 ,  user2 ,  pid ) ; 
739+         await  kv . UpsertAsync ( key3 ,  user3 ,  pid ) ; 
740+         await  kv . UpsertAsync ( key4 ,  user4 ,  pid ) ; 
741+ 
742+         // This query should filter users with null, empty, or whitespace-only DisplayName 
743+         Expression < Func < UserProfile ,  bool > >  expr  =  u =>  string . IsNullOrWhiteSpace ( u . DisplayName ) ; 
744+         var  usersWithEmptyDisplayName  =  await  kv . GetListAsync ( pid ,  expr ) . ToListAsync ( ) ; 
745+ 
746+         Assert . AreEqual ( 3 ,  usersWithEmptyDisplayName . Count ) ; 
747+         Assert . IsTrue ( usersWithEmptyDisplayName . Any ( u =>  u . Name  ==  "Bob" ) ) ; 
748+         Assert . IsTrue ( usersWithEmptyDisplayName . Any ( u =>  u . Name  ==  "Charlie" ) ) ; 
749+         Assert . IsTrue ( usersWithEmptyDisplayName . Any ( u =>  u . Name  ==  "David" ) ) ; 
750+ 
751+         // Test the opposite - users with valid DisplayName 
752+         Expression < Func < UserProfile ,  bool > >  exprNotEmpty  =  u =>  ! string . IsNullOrWhiteSpace ( u . DisplayName ) ; 
753+         var  usersWithValidDisplayName  =  await  kv . GetListAsync ( pid ,  exprNotEmpty ) . ToListAsync ( ) ; 
754+ 
755+         Assert . AreEqual ( 1 ,  usersWithValidDisplayName . Count ) ; 
756+         Assert . AreEqual ( "Alice" ,  usersWithValidDisplayName [ 0 ] . Name ) ; 
757+     } 
703758} 
0 commit comments