go-proxy/job_test.go
Virgil 07ff21aa67 fix(proxy): align job and splitter behaviour with RFC
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-04 11:07:41 +00:00

72 lines
1.9 KiB
Go

package proxy
import "testing"
func TestJob_IsValid_Good(t *testing.T) {
job := Job{Blob: "abcd", JobID: "job-1"}
if !job.IsValid() {
t.Fatal("expected valid job")
}
}
func TestJob_IsValid_Bad(t *testing.T) {
job := Job{Blob: "abcd"}
if job.IsValid() {
t.Fatal("expected invalid job without job ID")
}
}
func TestJob_IsValid_Ugly(t *testing.T) {
var job Job
if job.IsValid() {
t.Fatal("zero job should be invalid")
}
}
func TestJob_BlobWithFixedByte_Good(t *testing.T) {
job := Job{Blob: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}
got := job.BlobWithFixedByte(0x2a)
if got[78:80] != "2a" {
t.Fatalf("expected byte patch 2a, got %s", got[78:80])
}
}
func TestJob_BlobWithFixedByte_Bad(t *testing.T) {
job := Job{Blob: "short"}
if got := job.BlobWithFixedByte(0x2a); got != "short" {
t.Fatalf("expected short blob unchanged, got %q", got)
}
}
func TestJob_BlobWithFixedByte_Ugly(t *testing.T) {
job := Job{Blob: "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}
got := job.BlobWithFixedByte(0x00)
if got[78:80] != "00" {
t.Fatalf("expected byte patch 00, got %s", got[78:80])
}
}
func TestJob_DifficultyFromTarget_Good(t *testing.T) {
job := Job{Target: "b88d0600"}
if got := job.DifficultyFromTarget(); got == 0 {
t.Fatal("expected non-zero difficulty")
}
}
func TestJob_DifficultyFromTarget_Bad(t *testing.T) {
job := Job{Target: "zzzzzzzz"}
if got := job.DifficultyFromTarget(); got != 0 {
t.Fatalf("expected invalid target difficulty to be zero, got %d", got)
}
}
func TestJob_DifficultyFromTarget_Ugly(t *testing.T) {
job := Job{Target: "00000000"}
if got := job.DifficultyFromTarget(); got != 0 {
t.Fatalf("expected zero target difficulty to be zero, got %d", got)
}
job = Job{Target: "ffffffff"}
if got := job.DifficultyFromTarget(); got != 1 {
t.Fatalf("expected maximum target to resolve to difficulty 1, got %d", got)
}
}