image_test.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package llamarunner
  2. import (
  3. "reflect"
  4. "testing"
  5. )
  6. func TestImageCache(t *testing.T) {
  7. cache := ImageContext{images: make([]imageCache, 4)}
  8. valA := [][]float32{{0.1, 0.2}, {0.3}}
  9. valB := [][]float32{{0.4}, {0.5}, {0.6}}
  10. valC := [][]float32{{0.7}}
  11. valD := [][]float32{{0.8}}
  12. valE := [][]float32{{0.9}}
  13. // Empty cache
  14. result, err := cache.findImage(0x5adb61d31933a946)
  15. if err != errImageNotFound {
  16. t.Errorf("found result in empty cache: result %v, err %v", result, err)
  17. }
  18. // Insert A
  19. cache.addImage(0x5adb61d31933a946, valA)
  20. result, err = cache.findImage(0x5adb61d31933a946)
  21. if !reflect.DeepEqual(result, valA) {
  22. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  23. }
  24. // Insert B
  25. cache.addImage(0x011551369a34a901, valB)
  26. result, err = cache.findImage(0x5adb61d31933a946)
  27. if !reflect.DeepEqual(result, valA) {
  28. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  29. }
  30. result, err = cache.findImage(0x011551369a34a901)
  31. if !reflect.DeepEqual(result, valB) {
  32. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  33. }
  34. // Replace B with C
  35. cache.addImage(0x011551369a34a901, valC)
  36. result, err = cache.findImage(0x5adb61d31933a946)
  37. if !reflect.DeepEqual(result, valA) {
  38. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  39. }
  40. result, err = cache.findImage(0x011551369a34a901)
  41. if !reflect.DeepEqual(result, valC) {
  42. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  43. }
  44. // Evict A
  45. cache.addImage(0x756b218a517e7353, valB)
  46. cache.addImage(0x75e5e8d35d7e3967, valD)
  47. cache.addImage(0xd96f7f268ca0646e, valE)
  48. result, err = cache.findImage(0x5adb61d31933a946)
  49. if reflect.DeepEqual(result, valA) {
  50. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  51. }
  52. result, err = cache.findImage(0x756b218a517e7353)
  53. if !reflect.DeepEqual(result, valB) {
  54. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  55. }
  56. result, err = cache.findImage(0x011551369a34a901)
  57. if !reflect.DeepEqual(result, valC) {
  58. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  59. }
  60. result, err = cache.findImage(0x75e5e8d35d7e3967)
  61. if !reflect.DeepEqual(result, valD) {
  62. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  63. }
  64. result, err = cache.findImage(0xd96f7f268ca0646e)
  65. if !reflect.DeepEqual(result, valE) {
  66. t.Errorf("failed to find expected value: result %v, err %v", result, err)
  67. }
  68. }