2
0

lexer_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package parser
  2. import (
  3. "os"
  4. "slices"
  5. "strings"
  6. "testing"
  7. )
  8. const infNaNTest = `
  9. # HELP test_metric testing 1 2 3
  10. test_metric{label1="value1",label2="value2"} +Inf 1708014188740
  11. test_metric{label1="value1",label2="value2"} Inf 1708014188740
  12. test_metric{label1="value1",label2="value2"} -Inf 1708014188740
  13. test_metric{label1="value1",label2="value2"} NaN 1708014188740
  14. test_metric{label1="value1",label2="value2"} +NaN 1708014188740
  15. test_metric{label1="value1",label2="value2"} -NaN 1708014188740
  16. `
  17. func TestInfNan(t *testing.T) {
  18. acceptable := []string{"+Inf", "Inf", "-Inf", "NaN", "+NaN", "-NaN", "1708014188740"}
  19. f := strings.NewReader(infNaNTest)
  20. l := newLexer(f)
  21. for {
  22. tok := l.next()
  23. if tok.Type == Eof {
  24. t.Logf("<EOF>")
  25. break
  26. }
  27. if tok.Type == Value {
  28. if !slices.Contains(acceptable, tok.Value) {
  29. t.Errorf("Unexpected value: %v", tok.Value)
  30. }
  31. }
  32. }
  33. }
  34. func TestLexer(t *testing.T) {
  35. f, err := os.Open("scrape.txt")
  36. if err != nil {
  37. t.Fatal(err)
  38. }
  39. defer f.Close()
  40. l := newLexer(f)
  41. for {
  42. tok := l.next()
  43. if tok.Type == Eof {
  44. t.Logf("EOF Encountered")
  45. break
  46. }
  47. t.Logf("Token: %v", tok)
  48. }
  49. }