22using Infidex . Scoring ;
33using Infidex . Coverage ;
44using Infidex . Tokenization ;
5+ using System . Reflection ;
56
67namespace Infidex . Tests ;
78
@@ -11,22 +12,26 @@ public class BugReproductionTests
1112 [ TestMethod ]
1213 public void PrefixPreference_MatrixRev_PreferRevisitedOverReloaded ( )
1314 {
14- // "the matrix rev"
15- // "The Matrix Reloaded" vs "The Matrix Revisited"
16- // "Revisited" starts with "Rev". "Reloaded" does not.
17-
1815 string query = "the matrix rev" ;
1916 string docReloaded = "The Matrix Reloaded" ;
2017 string docRevisited = "The Matrix Revisited" ;
2118
2219 var tokenizer = new Tokenizer ( [ 3 ] , 2 , 0 , TextNormalizer . CreateDefault ( ) , TokenizerSetup . CreateDefault ( ) ) ;
2320 var setup = CoverageSetup . CreateDefault ( ) ;
2421 var engine = new CoverageEngine ( tokenizer , setup ) ;
22+
23+ // IDFs observed: "the"~1.57, "matrix"~9.54, "rev"~9.51
24+ var idfCache = new Dictionary < string , float >
25+ {
26+ { "the" , 1.574f } ,
27+ { "matrix" , 9.544f } ,
28+ { "rev" , 9.515f }
29+ } ;
2530
26- // Calculate features for Reloaded
27- var featsReloaded = engine . CalculateFeatures ( query , docReloaded , 0 , 1 ) ;
31+ engine . SetWordIdfCache ( idfCache ) ;
2832
29- // Calculate features for Revisited
33+ // Calculate features
34+ var featsReloaded = engine . CalculateFeatures ( query , docReloaded , 0 , 1 ) ;
3035 var featsRevisited = engine . CalculateFeatures ( query , docRevisited , 0 , 2 ) ;
3136
3237 // Score
@@ -36,11 +41,29 @@ public void PrefixPreference_MatrixRev_PreferRevisitedOverReloaded()
3641 Console . WriteLine ( $ "Reloaded: { scoreReloaded . score } ") ;
3742 Console . WriteLine ( $ "Revisited: { scoreRevisited . score } ") ;
3843
44+ // Debug info
45+ Console . WriteLine ( "Reloaded Features:" ) ;
46+ if ( featsReloaded . TermIdf != null ) Console . WriteLine ( $ " IDFs: { string . Join ( ", " , featsReloaded . TermIdf ) } ") ;
47+ if ( featsReloaded . TermCi != null ) Console . WriteLine ( $ " Cis: { string . Join ( ", " , featsReloaded . TermCi ) } ") ;
48+ Console . WriteLine ( $ " AvgIDF: { featsReloaded . TotalIdf / featsReloaded . TermsCount } ") ;
49+
50+ Console . WriteLine ( "Revisited Features:" ) ;
51+ if ( featsRevisited . TermIdf != null ) Console . WriteLine ( $ " IDFs: { string . Join ( ", " , featsRevisited . TermIdf ) } ") ;
52+ if ( featsRevisited . TermCi != null ) Console . WriteLine ( $ " Cis: { string . Join ( ", " , featsRevisited . TermCi ) } ") ;
53+ Console . WriteLine ( $ " AvgIDF: { featsRevisited . TotalIdf / featsRevisited . TermsCount } ") ;
54+
55+ int scoreReloadedInt = ( int ) scoreReloaded . score ;
56+ bool reloadedHasDominance = ( scoreReloadedInt & 64 ) != 0 ;
57+
58+ int scoreRevisitedInt = ( int ) scoreRevisited . score ;
59+ bool revisitedHasDominance = ( scoreRevisitedInt & 64 ) != 0 ;
60+
61+ Console . WriteLine ( $ "Reloaded Dominance: { reloadedHasDominance } ") ;
62+ Console . WriteLine ( $ "Revisited Dominance: { revisitedHasDominance } ") ;
63+
3964 Assert . IsTrue ( scoreRevisited . score > scoreReloaded . score ,
40- $ "Revisited ({ scoreRevisited . score } ) should score higher than Reloaded ({ scoreReloaded . score } )") ;
41-
42- // Check why
43- Assert . IsTrue ( featsRevisited . FusionSignals . LexicalPrefixLast , "Revisited should have LexicalPrefixLast" ) ;
44- Assert . IsFalse ( featsReloaded . FusionSignals . LexicalPrefixLast , "Reloaded should NOT have LexicalPrefixLast" ) ;
65+ $ "Revisited ({ scoreRevisited . score } ) should score higher than Reloaded ({ scoreReloaded . score } ). " +
66+ $ "Currently failing due to Dominance Flip (Reloaded has dominance, Revisited does not).") ;
4567 }
68+
4669}
0 commit comments