85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package proxy
|
|
|
|
import (
|
|
"encoding/json"
|
|
"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)
|
|
}
|
|
}
|
|
|
|
func TestJob_JSON_Unmarshal_Good(t *testing.T) {
|
|
var job Job
|
|
if err := json.Unmarshal([]byte(`{"blob":"abcd","job_id":"job-1","target":"b88d0600","algo":"cn/r","height":42,"seed_hash":"seed","id":"session-1"}`), &job); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if job.JobID != "job-1" || job.SeedHash != "seed" || job.ClientID != "session-1" {
|
|
t.Fatalf("unexpected decoded job: %+v", job)
|
|
}
|
|
}
|