From 71559a48afc860d124b4ddfeb8df752b22a25053 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 23 Mar 2025 12:01:36 +0800 Subject: Separate validateBitZeros into a separate file --- bitwise_test.go | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 bitwise_test.go (limited to 'bitwise_test.go') diff --git a/bitwise_test.go b/bitwise_test.go new file mode 100644 index 0000000..394d407 --- /dev/null +++ b/bitwise_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