livekit-protocol 0.7.5

Livekit protocol and utilities for the Rust SDK
Documentation
package utils

import (
	"errors"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestPromise(t *testing.T) {
	t.Run("zero value is usable", func(t *testing.T) {
		var p Promise[bool]

		require.False(t, p.Resolved())
		done := p.Done()
		select {
		case <-done:
			require.FailNow(t, "unresolved done channel should block")
		default:
		}

		p.Resolve(true, nil)

		require.True(t, p.Resolved())
		select {
		case <-done:
		default:
			require.FailNow(t, "resolved done channel should not block")
		}

		require.True(t, p.Result)
	})

	t.Run("promise cannot be resolved twice", func(t *testing.T) {
		p := NewPromise[bool]()
		p.Resolve(false, errors.New("fail"))
		p.Resolve(true, nil)

		require.False(t, p.Result)
		require.Error(t, p.Err)
	})
}