package main
import "testing"
func TestParseArgsCPU(t *testing.T) {
opts, err := parseArgs([]string{"--cpu", "Ryzen 3600x"})
if err != nil {
t.Fatalf("parseArgs returned error: %v", err)
}
if opts.kind != kindCPU || opts.query != "Ryzen 3600x" {
t.Fatalf("unexpected options: %+v", opts)
}
}
func TestParseArgsGPU(t *testing.T) {
opts, err := parseArgs([]string{"--gpu", "Radeon RX 6650 XT"})
if err != nil {
t.Fatalf("parseArgs returned error: %v", err)
}
if opts.kind != kindGPU || opts.query != "Radeon RX 6650 XT" {
t.Fatalf("unexpected options: %+v", opts)
}
}
func TestPassMarkSelectedStatsCPU(t *testing.T) {
html := `
AMD Ryzen 5 3600X185.518,123$97.71`
stats := passmarkSelectedStats(html)
want := map[string]string{
"Matched Product": "AMD Ryzen 5 3600X",
"PassMark Score": "18,123",
"Value": "185.5",
"Price": "$97.71",
"Rank": "1103",
"Samples": "8702",
}
assertStats(t, stats, want)
}
func TestPassMarkSelectedStatsGPU(t *testing.T) {
html := `
Radeon RX 6650 XT57.017111299.99*`
stats := passmarkSelectedStats(html)
want := map[string]string{
"Matched Product": "Radeon RX 6650 XT",
"PassMark Score": "17111",
"Value": "57.0",
"Price": "299.99*",
"Rank": "124",
"Samples": "5093",
}
assertStats(t, stats, want)
}
func TestBestCandidateSplitsGPUModelNumbers(t *testing.T) {
best, ok := bestCandidate("Radeon RX6650xt", []candidate{
{Name: "256MB DDR Radeon 9800 XT", URL: "old"},
{Name: "Radeon RX 6650 XT", URL: "new"},
})
if !ok {
t.Fatal("expected a match")
}
if best.URL != "new" {
t.Fatalf("matched %q, want Radeon RX 6650 XT", best.Name)
}
}
func assertStats(t *testing.T, stats []stat, want map[string]string) {
t.Helper()
got := make(map[string]string)
for _, s := range stats {
got[s.Name] = s.Value
}
for k, v := range want {
if got[k] != v {
t.Fatalf("stat %q = %q, want %q; all stats: %+v", k, got[k], v, stats)
}
}
}