/**
 * Test Dependencies
 */

import './helper.js'
import chai from 'chai'
const expect = chai.expect
import sinonChai from 'sinon-chai'
chai.use(sinonChai)

import { TopicTree } from '../src/topic_tree.js'

describe('TopicTree', () => {
  describe('#values', () => {
    it('matches "/setup/rooms/1/name"', () => {
      const tree = new TopicTree()

      tree.add('setup', 3000)
      tree.add('setup/rooms', 3300)
      tree.add('setup/rooms/1', 3330)
      tree.add('setup/rooms/1/name', 3333)

      tree.add('#', 1000)
      tree.add('setup/rooms/#', 3310)

      tree.add('setup/rooms/+/name', 3323)
      tree.add('setup/rooms/+', 3320)
      tree.add('setup/rooms/+/power', -3323)
      tree.add('setup/+/+/name', 3223)

      const values = tree.values('setup/rooms/1/name')

      expect(values).to.eql([3333, 3323, 3310, 3223, 1000])
    })
  })

  describe('#entries', () => {
    it('matches "/setup/rooms/1/name"', () => {
      const tree = new TopicTree()

      tree.add('setup', 3000)
      tree.add('setup/rooms', 3300)
      tree.add('setup/rooms/1', 3330)
      tree.add('setup/rooms/1/name', 3333)

      tree.add('#', 1000)
      tree.add('setup/rooms/#', 3310)

      tree.add('setup/rooms/+/name', 3323)
      tree.add('setup/rooms/+', 3320)
      tree.add('setup/rooms/+/power', -3323)
      tree.add('setup/+/+/name', 3223)

      const entries = tree.entries('setup/rooms/1/name')

      expect(entries).to.eql([
        ['setup/rooms/1/name', 3333],
        ['setup/rooms/+/name', 3323],
        ['setup/rooms/#', 3310],
        ['setup/+/+/name', 3223],
        ['#', 1000]
      ])
    })
  })
})