1from RLTest import Env 2 3 4def testIfQueries(env): 5 env.cmd('FT.CREATE idx ON HASH SCHEMA txt TEXT num NUMERIC empty TEXT') 6 env.cmd('FT.ADD idx doc1 1.0 FIELDS txt word num 10') 7 res = env.cmd('FT.GET idx doc1') 8 env.assertEqual(set(res), set(['txt', 'word', 'num', '10'])) 9 10 # test single field 11 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt FIELDS txt word').equal('OK') 12 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt FIELDS txt word').equal('NOADD') 13 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if to_number(@txt) FIELDS txt word').contains('to_number: cannot convert string') 14 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !to_number(@txt) FIELDS txt word').contains('to_number: cannot convert string') 15 16 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @num FIELDS num 10').equal('OK') 17 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@num FIELDS num 10').equal('NOADD') 18 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if to_str(@num) FIELDS num 10').equal('OK') 19 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !to_str(@num) FIELDS num 10').equal('NOADD') 20 21 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty FIELDS txt word').equal('NOADD') # 1.4 returns OK 22 #env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty FIELDS txt word').equal('OK') # 1.6 & 1.4 returns NOADD 23 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if to_number(@empty) FIELDS txt word').equal('NOADD') #?? # 1.4 error 24 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !to_number(@empty) FIELDS txt word').equal('NOADD') #?? # 1.4 error 25 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if to_str(@empty) FIELDS num 10').equal('NOADD') #?? # 1.4 OK 26 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !to_str(@empty) FIELDS num 10').equal('NOADD') #?? 27 28 # test multiple fields 29 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt==@txt FIELDS txt word').equal('OK') 30 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty==@empty FIELDS txt word').equal('NOADD') # 1.4 OK 31 32 # comaprison filled to empty 33 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt==@empty FIELDS txt word').equal('NOADD') 34 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt!=@empty FIELDS txt word').equal('NOADD') # 1.4 OK 35 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt>@empty FIELDS txt word').equal('NOADD') # 1.4 OK 36 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt>=@empty FIELDS txt word').equal('NOADD') # 1.4 OK 37 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt<@empty FIELDS txt word').equal('NOADD') 38 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt<=@empty FIELDS txt word').equal('NOADD') 39 # negative comparison filled to empty 40 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt==@empty FIELDS txt word').equal('NOADD') # 1.4 OK 41 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt!=@empty FIELDS txt word').equal('NOADD') 42 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt>@empty FIELDS txt word').equal('NOADD') 43 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt>=@empty FIELDS txt word').equal('NOADD') 44 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt<@empty FIELDS txt word').equal('NOADD') # 1.4 OK 45 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@txt<=@empty FIELDS txt word').equal('NOADD') # 1.4 OK 46 47 # comaprison empty to empty 48 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty==@empty FIELDS txt word').equal('NOADD') # 1.4 OK 49 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty!=@empty FIELDS txt word').equal('NOADD') 50 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty>@empty FIELDS txt word').equal('NOADD') 51 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty>=@empty FIELDS txt word').equal('NOADD') # 1.4 OK 52 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty<@empty FIELDS txt word').equal('NOADD') 53 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty<=@empty FIELDS txt word').equal('NOADD') # 1.4 OK 54 55 # negative comparison empty to empty 56 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty==@empty FIELDS txt word').equal('NOADD') 57 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty!=@empty FIELDS txt word').equal('NOADD') # 1.4 OK 58 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty>@empty FIELDS txt word').equal('NOADD') # 1.4 OK 59 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty>=@empty FIELDS txt word').equal('NOADD') 60 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty<@empty FIELDS txt word').equal('NOADD') # 1.4 OK 61 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty<=@empty FIELDS txt word').equal('NOADD') 62 63 # Or 64 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt||@txt FIELDS txt word').equal('OK') 65 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt||@empty FIELDS txt word').equal('OK') 66 #env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty||@txt FIELDS txt word').equal('OK') # 1.6 NOADD 67 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty||@empty FIELDS txt word').equal('NOADD') # 1.4 OK 68 #env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty||!@empty FIELDS txt word').equal('OK') # 1.6 NOADD 69 #env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty||@empty FIELDS txt word').equal('OK') # 70 #env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !@empty||!@empty FIELDS txt word').equal('OK') # 71 72 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt||@empty=="word" FIELDS txt word').equal('OK') 73 #env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty=="word"||@txt FIELDS txt word').equal('OK') # ?? # 1.6 NOADD 74 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty=="word"||@empty=="word" FIELDS txt word').equal('NOADD') # ?? 75 76 # And 77 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt&&@txt FIELDS txt word').equal('OK') 78 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt&&@empty FIELDS txt word').equal('NOADD') # 1.4 OK 79 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty&&@txt FIELDS txt word').equal('NOADD') # 1.4 OK 80 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty&&@empty FIELDS txt word').equal('NOADD') # 1.4 OK 81 82 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @txt&&@empty=="word" FIELDS txt word').equal('NOADD') 83 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty=="word"&&@txt FIELDS txt word').equal('NOADD') # ?? 84 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if @empty=="word"&&@empty=="word" FIELDS txt word').equal('NOADD') # ?? 85 86def testExists(env): 87 env.cmd('FT.CREATE idx ON HASH SCHEMA txt TEXT num NUMERIC empty TEXT') 88 env.cmd('FT.ADD idx doc1 1.0 FIELDS txt word num 10') 89 res = env.cmd('FT.GET idx doc1') 90 env.assertEqual(set(res), set(['txt', 'word', 'num', '10'])) 91 92 # test single field 93 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@txt) FIELDS txt word').equal('OK') 94 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@num) FIELDS txt word').equal('OK') 95 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@empty) FIELDS txt word').equal('NOADD') 96 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@noexist) FIELDS txt word').contains('`noexist` not loaded') 97 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !exists(@txt) FIELDS txt word').equal('NOADD') 98 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !exists(@num) FIELDS txt word').equal('NOADD') 99 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !exists(@empty) FIELDS txt word').equal('OK') 100 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if !exists(@noexist) FIELDS txt word').contains('`noexist` not loaded') 101 102 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@txt)||exists(@txt) FIELDS txt word').equal('OK') 103 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@txt)||exists(@empty) FIELDS txt word').equal('OK') 104 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@empty)||exists(@txt) FIELDS txt word').equal('OK') 105 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@empty)||exists(@empty) FIELDS txt word').equal('NOADD') 106 107 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@txt)&&exists(@txt) FIELDS txt word').equal('OK') 108 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@txt)&&exists(@empty) FIELDS txt word').equal('NOADD') 109 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@empty)&&exists(@txt) FIELDS txt word').equal('NOADD') 110 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(@empty)&&exists(@empty) FIELDS txt word').equal('NOADD') 111 112 # check no crash 113 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if lower(exists(@empty)) FIELDS txt word').equal('NOADD') 114 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if upper(exists(@empty)) FIELDS txt word').equal('NOADD') 115 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if substr(exists(@empty)) FIELDS txt word').error() 116 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if format(exists(@empty)) FIELDS txt word').error() 117 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if split(exists(@empty)) FIELDS txt word').error() 118 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if matched_terms(exists(@empty)) FIELDS txt word').equal('NOADD') 119 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if to_number(exists(@empty)) FIELDS txt word').equal('NOADD') # ?? 120 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if to_str(exists(@empty)) FIELDS txt word').equal('OK') 121 env.expect('FT.ADD idx doc1 1.0 REPLACE PARTIAL if exists(exists(@empty)) FIELDS txt word').equal('OK') # ?? 122 123