mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2025-12-20 00:50:06 +08:00
Some checks are pending
Test / test (1.20, macos-13) (push) Waiting to run
Test / test (1.20, macos-latest) (push) Waiting to run
Test / test (1.20, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.20, ubuntu-latest) (push) Waiting to run
Test / test (1.20, windows-latest) (push) Waiting to run
Test / test (1.21, macos-13) (push) Waiting to run
Test / test (1.21, macos-latest) (push) Waiting to run
Test / test (1.21, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.21, ubuntu-latest) (push) Waiting to run
Test / test (1.21, windows-latest) (push) Waiting to run
Test / test (1.22, macos-13) (push) Waiting to run
Test / test (1.22, macos-latest) (push) Waiting to run
Test / test (1.22, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.22, ubuntu-latest) (push) Waiting to run
Test / test (1.22, windows-latest) (push) Waiting to run
Test / test (1.23, macos-13) (push) Waiting to run
Test / test (1.23, macos-latest) (push) Waiting to run
Test / test (1.23, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.23, ubuntu-latest) (push) Waiting to run
Test / test (1.23, windows-latest) (push) Waiting to run
Test / test (1.24, macos-13) (push) Waiting to run
Test / test (1.24, macos-latest) (push) Waiting to run
Test / test (1.24, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.24, ubuntu-latest) (push) Waiting to run
Test / test (1.24, windows-latest) (push) Waiting to run
Test / test (1.25, macos-13) (push) Waiting to run
Test / test (1.25, macos-latest) (push) Waiting to run
Test / test (1.25, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.25, ubuntu-latest) (push) Waiting to run
Test / test (1.25, windows-latest) (push) Waiting to run
Trigger CMFA Update / trigger-CMFA-update (push) Waiting to run
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package atomic
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestTypedValue(t *testing.T) {
|
|
{
|
|
var v TypedValue[int]
|
|
got, gotOk := v.LoadOk()
|
|
if got != 0 || gotOk {
|
|
t.Fatalf("LoadOk = (%v, %v), want (0, false)", got, gotOk)
|
|
}
|
|
v.Store(1)
|
|
got, gotOk = v.LoadOk()
|
|
if got != 1 || !gotOk {
|
|
t.Fatalf("LoadOk = (%v, %v), want (1, true)", got, gotOk)
|
|
}
|
|
}
|
|
|
|
{
|
|
var v TypedValue[error]
|
|
got, gotOk := v.LoadOk()
|
|
if got != nil || gotOk {
|
|
t.Fatalf("LoadOk = (%v, %v), want (nil, false)", got, gotOk)
|
|
}
|
|
v.Store(io.EOF)
|
|
got, gotOk = v.LoadOk()
|
|
if got != io.EOF || !gotOk {
|
|
t.Fatalf("LoadOk = (%v, %v), want (EOF, true)", got, gotOk)
|
|
}
|
|
err := &os.PathError{}
|
|
v.Store(err)
|
|
got, gotOk = v.LoadOk()
|
|
if got != err || !gotOk {
|
|
t.Fatalf("LoadOk = (%v, %v), want (%v, true)", got, gotOk, err)
|
|
}
|
|
v.Store(nil)
|
|
got, gotOk = v.LoadOk()
|
|
if got != nil || !gotOk {
|
|
t.Fatalf("LoadOk = (%v, %v), want (nil, true)", got, gotOk)
|
|
}
|
|
}
|
|
|
|
{
|
|
c1, c2, c3 := make(chan struct{}), make(chan struct{}), make(chan struct{})
|
|
var v TypedValue[chan struct{}]
|
|
if v.CompareAndSwap(c1, c2) != false {
|
|
t.Fatalf("CompareAndSwap = true, want false")
|
|
}
|
|
if v.CompareAndSwap(nil, c1) != true {
|
|
t.Fatalf("CompareAndSwap = false, want true")
|
|
}
|
|
if v.CompareAndSwap(c2, c3) != false {
|
|
t.Fatalf("CompareAndSwap = true, want false")
|
|
}
|
|
if v.CompareAndSwap(c1, c2) != true {
|
|
t.Fatalf("CompareAndSwap = false, want true")
|
|
}
|
|
}
|
|
}
|