#!/usr/local/bin/ruby
if $0 == __FILE__
  Dir.chdir File.dirname(__FILE__)+'/../'
  $:.unshift File.expand_path('../lib/')
end

require 'rio'
require 'tc/testcase'

class TC_split < Test::RIO::TestCase
  @@once = false
  def self.once
    @@once = true
  end
  def setup
    super
    self.class.once unless @@once
  end
  def test_basic
    r = rio('b/c/d')
    ary = r.split
    assert_equal([rio('b'),rio('c'),rio('d')],ary)
    assert_equal(r,ary.to_rio)
  end
  def test_abs_ne
    r = rio('/a/b/c/d')
    ary = r.split
    assert_equal([rio('/'),rio('a'),rio('b'),rio('c'),rio('d')],ary)
    assert_equal(r,ary.to_rio)
    assert_equal(rio('d'),ary[-1])
    assert_equal(r,ary[-1].abs)
  end

  def test_abs_drive
    r = rio('q:/a/b')
    ary = r.split
    exp = [rio('q:/'),rio('a'),rio('b')]
    assert_equal(exp,ary)
    assert_equal(r,ary.to_rio)
    assert_equal(rio('b'),ary[-1])
    assert_equal(r,ary[-1].abs)
  end
  def test_abs_host
    r = rio('//ahost/a/b/c')
    ary = r.split
    exp = [rio('file://ahost/'),rio('a'),rio('b'),rio('c')]
    assert_equal(exp,ary)
    assert_equal(r,ary.to_rio)
    assert_equal(rio('c'),ary[-1])
    assert_equal(r,ary[-1].abs)
  end
  def test_abs_url
    r = rio('file://ahost/a/b/c')
    ary = r.split
    exp = [rio('file://ahost/'),rio('a'),rio('b'),rio('c')]
    assert_equal(exp,ary)
    assert_equal(r,ary.to_rio)
    assert_equal(rio('c'),ary[-1])
    assert_equal(r,ary[-1].abs)
  end
  def test_rel
    r = rio('a/b/c')
    ary = r.split
    exp = [rio('a'),rio('b'),rio('c')]
    assert_equal(exp,ary)
    assert_equal(r,ary.to_rio)
    assert_equal(rio('c'),ary[-1])
    assert_equal(r.abs,ary[-1].abs)
  end
end