#!/usr/bin/perl -w
use Test::More tests => 23;
use strict;
BEGIN {
use_ok ('HTML::Widgets::NavMenu::Tree::Iterator::Stack'); # TEST
}
{
my $stack = HTML::Widgets::NavMenu::Tree::Iterator::Stack->new();
ok ( $stack, "Checking for Object Allocation"); # TEST
is ( $stack->len(), 0, "len() == 0 on allocation"); # TEST
ok ( $stack->is_empty(), "is_empty() on allocation"); # TEST
$stack->push("Hello");
$stack->push("World");
# TEST
ok ( (!$stack->is_empty()), "is_empty() is not true after filling");
$stack->push("TamTam");
is ( $stack->len(), 3, "Checking stack len"); # TEST
is ( $stack->top(), "TamTam", "Checking top of stack"); # TEST
is ( $stack->item(2), "TamTam", "Checking Item 2"); # TEST
is ( $stack->item(1), "World", "Checking Item 1"); # TEST
is ( $stack->item(0), "Hello", "Checking Item 0"); # TEST
my $popped_item = $stack->pop();
is ( $popped_item, "TamTam", "Popped Item"); # TEST
is ( $stack->len(), 2, "Checking stack len"); # TEST
# TEST
is ( $stack->top(), "World", "Checking stack top after pop");
$stack->push("Quatts");
is ( $stack->len(), 3, "Stack Len"); # TEST
is ( $stack->top(), "Quatts", "Top Item is Quatts"); # TEST
$stack->pop();
$stack->pop();
$stack->pop();
# TEST
ok ( (! defined($stack->top())),
"Checking for top() returning undef on empty stack");
is ( $stack->len(), 0, "len() == 0 after popping all elements"); # TEST
ok ( $stack->is_empty(), "is_empty() after popping all elements"); # TEST
}
{
my $stack = HTML::Widgets::NavMenu::Tree::Iterator::Stack->new();
$stack->push("Hello");
$stack->push("Superb");
$stack->push("Quality");
$stack->push("Pardon");
$stack->reset();
is ( $stack->len(), 0, "len() == 0 after reset"); # TEST
ok ( $stack->is_empty(), "is_empty() after reset"); # TEST
# TEST
ok ( (! defined($stack->top())),
"Checking for top() returning undef on reset stack");
$stack->push("Condor");
# TEST
is ( $stack->len(), 1, "len() after push() after reset");
# TEST
is ( $stack->item(0), "Condor", "Stack is correct after push after reset");
}