From e68745e4cb31e6d6cde7b7c1c84b39d862a7d19d Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 23 Mar 2025 02:11:41 +0800 Subject: Basic proof of work --- main_test.go | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 main_test.go (limited to 'main_test.go') diff --git a/main_test.go b/main_test.go new file mode 100644 index 0000000..394d407 --- /dev/null +++ b/main_test.go @@ -0,0 +1,90 @@ +package main + +import ( + "testing" +) + +func TestValidateBitZeros(t *testing.T) { + tests := []struct { + name string + bs []byte + n uint + expected bool + }{ + { + name: "First 8 bits are zeros", + bs: []byte{0x00, 0x01}, + n: 8, + expected: true, + }, + { + name: "First 8 bits are not all zeros", + bs: []byte{0x01, 0x00}, + n: 8, + expected: false, + }, + { + name: "First 16 bits are zeros", + bs: []byte{0x00, 0x00, 0x01}, + n: 16, + expected: true, + }, + { + name: "First 16 bits are not all zeros", + bs: []byte{0x01, 0x00, 0x00}, + n: 16, + expected: false, + }, + { + name: "First 9 bits are zeros", + bs: []byte{0x00, 0x01}, + n: 9, + expected: true, + }, + { + name: "First 9 bits are not all zeros", + bs: []byte{0x01, 0x01}, + n: 9, + expected: false, + }, + { + name: "First 10 bits are zeros", + bs: []byte{0x00, 0x20}, + n: 10, + expected: true, + }, + { + name: "First 10 bits are not all zeros", + bs: []byte{0x00, 0x40}, + n: 10, + expected: false, + }, + { + name: "First 24 bits are zeros", + bs: []byte{0x00, 0x00, 0x00, 0x01}, + n: 24, + expected: true, + }, + { + name: "First 24 bits are not all zeros", + bs: []byte{0x00, 0x01, 0x00, 0x00}, + n: 24, + expected: false, + }, + { + name: "Checking zero bits", + bs: []byte{0xFF, 0xFF}, + n: 0, + expected: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := validateBitZeros(tt.bs, tt.n) + if got != tt.expected { + t.Errorf("validateBitZeros(%v, %v) = %v; want %v", tt.bs, tt.n, got, tt.expected) + } + }) + } +} -- cgit v1.2.3