mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-06-12 11:29:36 +03:00
v1.0.0
This commit is contained in:
21
common/bitmask/byte.go
Normal file
21
common/bitmask/byte.go
Normal file
@ -0,0 +1,21 @@
|
||||
package bitmask
|
||||
|
||||
// Byte is a bitmask in byte.
|
||||
type Byte byte
|
||||
|
||||
// Has returns true if this bitmask contains another bitmask.
|
||||
func (b Byte) Has(bb Byte) bool {
|
||||
return (b & bb) != 0
|
||||
}
|
||||
|
||||
func (b *Byte) Set(bb Byte) {
|
||||
*b |= bb
|
||||
}
|
||||
|
||||
func (b *Byte) Clear(bb Byte) {
|
||||
*b &= ^bb
|
||||
}
|
||||
|
||||
func (b *Byte) Toggle(bb Byte) {
|
||||
*b ^= bb
|
||||
}
|
36
common/bitmask/byte_test.go
Normal file
36
common/bitmask/byte_test.go
Normal file
@ -0,0 +1,36 @@
|
||||
package bitmask_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
. "github.com/xtls/xray-core/v1/common/bitmask"
|
||||
)
|
||||
|
||||
func TestBitmaskByte(t *testing.T) {
|
||||
b := Byte(0)
|
||||
b.Set(Byte(1))
|
||||
if !b.Has(1) {
|
||||
t.Fatal("expected ", b, " to contain 1, but actually not")
|
||||
}
|
||||
|
||||
b.Set(Byte(2))
|
||||
if !b.Has(2) {
|
||||
t.Fatal("expected ", b, " to contain 2, but actually not")
|
||||
}
|
||||
if !b.Has(1) {
|
||||
t.Fatal("expected ", b, " to contain 1, but actually not")
|
||||
}
|
||||
|
||||
b.Clear(Byte(1))
|
||||
if !b.Has(2) {
|
||||
t.Fatal("expected ", b, " to contain 2, but actually not")
|
||||
}
|
||||
if b.Has(1) {
|
||||
t.Fatal("expected ", b, " to not contain 1, but actually did")
|
||||
}
|
||||
|
||||
b.Toggle(Byte(2))
|
||||
if b.Has(2) {
|
||||
t.Fatal("expected ", b, " to not contain 2, but actually did")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user