photoprism/pkg/clusters/common_test.go

135 lines
2.1 KiB
Go

package clusters
import (
"testing"
)
func TestQueueEmptyWhenCreated(t *testing.T) {
queue := newPriorityQueue(0)
if queue.NotEmpty() {
t.Error("Newly created queue is not empty")
}
}
func TestQueueNowEmptyAfterAdd(t *testing.T) {
queue := newPriorityQueue(1)
queue.Push(&pItem{
v: 0,
p: 0.5,
})
if !queue.NotEmpty() {
t.Error("Queue is empty after a single add")
}
}
func TestQueueReturnsInPriorityOrder(t *testing.T) {
queue := newPriorityQueue(2)
var (
itemOne = &pItem{
v: 0,
p: 0.5,
}
itemTwo = &pItem{
v: 1,
p: 0.6,
}
)
queue.Push(itemTwo)
queue.Push(itemOne)
if queue.Pop().(*pItem) != itemOne {
t.Error("Queue is should return itemOne first")
}
if queue.Pop().(*pItem) != itemTwo {
t.Error("Queue is should return itemTwo next")
}
if queue.NotEmpty() {
t.Error("Queue is not empty")
}
}
func TestQueueReturnsInPriorityOrderAfterUpdate(t *testing.T) {
queue := newPriorityQueue(2)
var (
itemOne = &pItem{
v: 0,
p: 0.5,
}
itemTwo = &pItem{
v: 1,
p: 0.6,
}
)
queue.Push(itemTwo)
queue.Push(itemOne)
queue.Update(itemTwo, 1, 0.4)
if queue.Pop().(*pItem) != itemTwo {
t.Error("Queue is should return itemTwo first")
}
if queue.Pop().(*pItem) != itemOne {
t.Error("Queue is should return itemOne next")
}
if queue.NotEmpty() {
t.Error("Queue is not empty")
}
}
func TestBounds(t *testing.T) {
var (
f = "data/test.csv"
i = CsvImporter()
l = 3
)
d, e := i.Import(f, 0, 2)
if e != nil {
t.Errorf("Error importing data: %s\n", e.Error())
}
bounds := bounds(d)
if len(bounds) != 3 {
t.Errorf("Mismatched bounds array length: %d vs %d\n", len(bounds), l)
}
if bounds[0][0] != 0.1 || bounds[0][1] != 0.7 {
t.Error("Invalid bounds for feature #0")
}
if bounds[1][0] != 0.2 || bounds[1][1] != 0.8 {
t.Error("Invalid bounds for feature #1")
}
if bounds[2][0] != 0.3 || bounds[2][1] != 0.9 {
t.Error("Invalid bounds for feature #2")
}
}
func TestUniform(t *testing.T) {
var (
l = 100
d = &[2]float64{
0,
10,
}
)
for i := 0; i < l; i++ {
u := uniform(d)
if u < 0 || u > 10 {
t.Error("Unformly distributed variable out of bounds")
}
}
}