// Copyright (c) 2015, Emir Pasic. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import cb "github.com/emirpasic/gods/v2/queues/circularbuffer"

// CircularBufferExample to demonstrate basic usage of CircularBuffer
func main() {
	queue := cb.New[int](3) // empty (max size is 3)
	queue.Enqueue(1)        // 1
	queue.Enqueue(2)        // 1, 2
	queue.Enqueue(3)        // 1, 2, 3
	_ = queue.Values()      // 1, 2, 3
	queue.Enqueue(3)        // 4, 2, 3
	_, _ = queue.Peek()     // 4,true
	_, _ = queue.Dequeue()  // 4, true
	_, _ = queue.Dequeue()  // 2, true
	_, _ = queue.Dequeue()  // 3, true
	_, _ = queue.Dequeue()  // nil, false (nothing to deque)
	queue.Enqueue(1)        // 1
	queue.Clear()           // empty
	queue.Empty()           // true
	_ = queue.Size()        // 0
}
