78 lines
1.4 KiB
JavaScript
78 lines
1.4 KiB
JavaScript
// errorcheck
|
|
|
|
// Copyright 2009 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Test various correct and incorrect permutations of send-only,
|
|
// receive-only, and bidirectional channels.
|
|
|
|
'use strict'
|
|
|
|
const assert = require(`@nodeguy/assert`)
|
|
const Channel = require('../../lib')
|
|
|
|
it(`perm`, function () {
|
|
const c = Channel()
|
|
const cr = Channel().readOnly()
|
|
const cs = Channel().writeOnly()
|
|
|
|
const n = 0
|
|
|
|
assert.throws(() => {
|
|
Channel.shift(n) // ERROR "receive from non-chan"
|
|
})
|
|
|
|
assert.throws(() => {
|
|
Channel.push(2, n) // ERROR "send to non-chan"
|
|
})
|
|
|
|
c.push(0) // ok
|
|
c.shift() // ok
|
|
|
|
assert.throws(() => {
|
|
cr.push(0) // ERROR "send"
|
|
})
|
|
|
|
cr.shift() // ok
|
|
|
|
cs.push(0) // ok
|
|
|
|
assert.throws(() => {
|
|
cs.shift() // ERROR "receive"
|
|
})
|
|
|
|
Channel.select(
|
|
c.push(0), // ok
|
|
c.shift() // ok
|
|
)
|
|
|
|
assert.throws(() => {
|
|
Channel.select(
|
|
cr.push(0) // ERROR "send"
|
|
)
|
|
})
|
|
|
|
Channel.select(cr.shift()) // ok
|
|
|
|
Channel.select(cs.push(0)) // ok
|
|
|
|
assert.throws(() => {
|
|
Channel.select(cs.shift()) // ERROR "receive"
|
|
})
|
|
|
|
assert.throws(() => {
|
|
cs.forEach(() => {}) // ERROR "receive"
|
|
})
|
|
|
|
c.close()
|
|
cs.close()
|
|
|
|
assert.throws(() => {
|
|
cr.close() // ERROR "receive"
|
|
})
|
|
|
|
assert.throws(() => {
|
|
Channel.close(n) // ERROR "invalid operation.*non-chan type"
|
|
})
|
|
})
|