# File test.rb, line 385
    def test_output
      parser = PageTemplate::Parser.new()
      ns = PageTemplate::Namespace.new()
      ns.parent = parser
      ns["list"] = [1, 2, 3]

      # Simple TextCommands in a Loop
      c = PageTemplate::TextCommand.new("Dude!")
      loop_1 = PageTemplate::LoopCommand.new("loop", "list", "")
      loop_1.add(c)
      assert_equal("Dude!Dude!Dude!", loop_1.output(ns))
      c_1 = PageTemplate::TextCommand.new("Sweet!")
      loop_1.add(c_1)
      assert_equal("Dude!Sweet!Dude!Sweet!Dude!Sweet!", loop_1.output(ns))
      ns["list"] = nil
      assert_equal("", loop_1.output(ns))

      # Simple TextCommands in a Loop with an Else block
      c_1 = PageTemplate::TextCommand.new("Sweet!")
      c_2 = PageTemplate::TextCommand.new("Dude?")
      loop_2 = PageTemplate::LoopCommand.new("loop", "list", "")
      loop_2.add(c_1)
      loop_2.else
      loop_2.add(c_2)
      ns["list"] = nil
      assert_equal("Dude?", loop_2.output(ns))
      ns["list"] = [1, 2]
      assert_equal("Sweet!Sweet!", loop_2.output(ns))

      # A Loop that uses its metavariables
      c_1 = PageTemplate::TextCommand.new("First Post!")
      c_2 = PageTemplate::TextCommand.new("I know kung fu.")
      c_3 = PageTemplate::TextCommand.new("Prove it.")
      c_4 = PageTemplate::TextCommand.new("Last Post!")
      if_1 = PageTemplate::IfCommand.new("if", "__FIRST__")
      if_1.add(c_1)
      if_2 = PageTemplate::IfCommand.new("if", "__ODD__")
      if_2.add(c_2)
      if_2.else
      if_2.add(c_3)
      if_3 = PageTemplate::IfCommand.new("if", "__LAST__")
      if_3.add(c_4)
      loop_1 = PageTemplate::LoopCommand.new("in", "cliches", "")
      loop_1.add(if_1)
      loop_1.add(if_2)
      loop_1.add(if_3)
      ns["cliches"] = [1, 2]
      expected = c_1.output + c_2.output + c_3.output + c_4.output
      assert_equal(expected, loop_1.output(ns))

      # A Loop with a named iterator over the items in its list
      loop_1 = PageTemplate::LoopCommand.new("in", "list", "item")
      c_1 = PageTemplate::ValueCommand.new("item", nil)
      c_2 = PageTemplate::TextCommand.new(" ")
      loop_1.add(c_1)
      loop_1.add(c_2)
      ns["list"] = [0, -1, 2, -3, 4]
      expected = ns["list"].join(" ") + " "
      assert_equal(expected, loop_1.output(ns))

      # A loop with multiple iterators
      loop_1 = PageTemplate::LoopCommand.new("in", "names", "key val")
      c1 = PageTemplate::ValueCommand.new("key",nil)
      c2 = PageTemplate::ValueCommand.new("val",nil)
      tc = PageTemplate::TextCommand.new(": ")
      loop_1.add c1
      loop_1.add tc
      loop_1.add c2
      ns["names"] = { 'Brian' => 'Wisti', 'Greg' => 'Millam' }
      out = ns["names"].map { |fn,ln| "#{fn}: #{ln}" }.join('')
      assert_equal(out,loop_1.output(ns))
    end