Files
webrtc/operations_test.go
Eric Daniels 1bb9fa9020 Make onNegotiationNeeded conform to spec
- Removes non-canon logic
2024-06-24 11:03:40 -04:00

51 lines
1.3 KiB
Go

// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT
package webrtc
import (
"sync"
"testing"
"github.com/stretchr/testify/assert"
)
func TestOperations_Enqueue(t *testing.T) {
updateNegotiationNeededFlagOnEmptyChain := &atomicBool{}
onNegotiationNeededCalledCount := 0
var onNegotiationNeededCalledCountMu sync.Mutex
ops := newOperations(updateNegotiationNeededFlagOnEmptyChain, func() {
onNegotiationNeededCalledCountMu.Lock()
onNegotiationNeededCalledCount++
onNegotiationNeededCalledCountMu.Unlock()
})
for resultSet := 0; resultSet < 100; resultSet++ {
results := make([]int, 16)
resultSetCopy := resultSet
for i := range results {
func(j int) {
ops.Enqueue(func() {
results[j] = j * j
if resultSetCopy > 50 {
updateNegotiationNeededFlagOnEmptyChain.set(true)
}
})
}(i)
}
ops.Done()
expected := []int{0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225}
assert.Equal(t, len(expected), len(results))
assert.Equal(t, expected, results)
}
onNegotiationNeededCalledCountMu.Lock()
defer onNegotiationNeededCalledCountMu.Unlock()
assert.NotEqual(t, onNegotiationNeededCalledCount, 0)
}
func TestOperations_Done(*testing.T) {
ops := newOperations(&atomicBool{}, func() {
})
ops.Done()
}