github.com/diadata-org/diadata@v1.4.593/pkg/dia/helpers/queryHelper/blockgenerator_test.go (about) 1 package queryhelper 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "testing" 7 8 "github.com/diadata-org/diadata/pkg/dia" 9 "github.com/diadata-org/diadata/pkg/utils" 10 ) 11 12 var trades []dia.Trade 13 14 func setupGenerator() []Block { 15 json.Unmarshal([]byte(jsonTrades), &trades) 16 17 // trades = trades[9:] 18 blocks := []Block{} 19 20 return blocks 21 } 22 23 func setupGeneratorSizeShift() []Block { 24 err := json.Unmarshal([]byte(jsonTrades), &trades) 25 26 fmt.Printf("t: %v\n", err) 27 28 // trades = trades[9:] 29 bg := NewBlockGenerator(trades) 30 fmt.Printf("t: %v\n", trades) 31 bins := []utils.TimeBin{} 32 33 blocks := bg.GenerateBlocks(120, 240, bins) 34 35 return blocks 36 } 37 func TestBlockGeneratorFirstAndLastTimeDiff(t *testing.T) { 38 blocks := setupGenerator() 39 for k := range blocks { 40 diff := blocks[k].Trades[len(blocks[k].Trades)-1].Time.UnixNano() - blocks[k].Trades[0].Time.UnixNano() 41 if diff > 8*1e9 { 42 t.Error("diff is less than 8", diff) 43 } 44 45 } 46 } 47 48 func TestVwap(t *testing.T) { 49 50 blocks := setupGeneratorSizeShift() 51 fmt.Printf("t: %v\n", blocks) 52 53 r, _ := FilterVWAPIR(blocks, dia.Asset{Symbol: "DIA"}, 120) 54 for _, v := range r { 55 fmt.Printf("%v\n", v) 56 } 57 58 } 59 60 func TestIfAnytradeisrepeadted(t *testing.T) { 61 blocks := setupGenerator() 62 tradeToCheck := blocks[0].Trades[0] 63 for count, block := range blocks { 64 if count == 0 { 65 continue 66 } 67 for _, trade := range block.Trades { 68 if trade.ForeignTradeID == tradeToCheck.ForeignTradeID { 69 t.Error("Duplicate Trade") 70 } 71 72 } 73 } 74 } 75 76 func TestFirstTrade(t *testing.T) { 77 blocks := setupGenerator() 78 tradeToCheck := blocks[0].Trades[0] 79 if trades[0].ForeignTradeID != tradeToCheck.ForeignTradeID { 80 t.Error("Firts Trade is not equa to block first trade") 81 } 82 } 83 84 func TestIfTradesAreMissed(t *testing.T) { 85 blocks := setupGenerator() 86 totalTradesProvided := len(trades) 87 tradesinblock := 0 88 89 for _, block := range blocks { 90 tradesinblock = tradesinblock + len(block.Trades) 91 } 92 93 if totalTradesProvided != tradesinblock { 94 t.Errorf("Trades count Mimatched total %d in blocks its %d", totalTradesProvided, tradesinblock) 95 } 96 97 }