```ruby
require 'test/unit'
require 'test/unit/rr'
require_relative '../lib/yomou'

class NovelInfoTest < Test::Unit::TestCase

  setup do
    ENV["YOMOU_HOME"] = "/tmp"
  end

  sub_test_case "cache_path" do
    test "valid" do
      ncode = "x12345"
      info = Yomou::NovelInfo::PageParser.new(ncode)
      expected = "/tmp/info/12/x12345.html.xz"
      assert_equal(expected, info.cache_path.to_s)
    end

    test "downcase ncode" do
      ncode = "X12345"
      info = Yomou::NovelInfo::PageParser.new(ncode)
      expected = "/tmp/info/12/x12345.html.xz"
      assert_equal(expected, info.cache_path.to_s)
    end
  end

  sub_test_case "url" do
    test "valid" do
      ncode = "x12345"
      info = Yomou::NovelInfo::PageParser.new(ncode)
      expected = "http://ncode.syosetu.com/novelview/infotop/ncode/x12345/"
      assert_equal(expected, info.url)
    end

    test "downcase ncode" do
      ncode = "X12345"
      info = Yomou::NovelInfo::PageParser.new(ncode)
      expected = "http://ncode.syosetu.com/novelview/infotop/ncode/x12345/"
      assert_equal(expected, info.url)
    end
  end
end
```

Use data driven test case
user
```ruby
require 'test/unit'
require 'test/unit/rr'
require_relative '../lib/yomou'

class NovelInfoTest < Test::Unit::TestCase

  setup do
    ENV["YOMOU_HOME"] = "/tmp"
  end

  sub_test_case "cache_path" do
    expected = "/tmp/info/12/x12345.html.xz"
    data(
      'valid' => ["x12345", expected],
      'unified to downcase?' => ["X12345", expected]
    )
    def test_cache_path?(data)
      ncode, expected = data
      info = Yomou::NovelInfo::PageParser.new(ncode)
      assert_equal(expected, info.cache_path.to_s)
    end
  end

  sub_test_case "url" do
    expected = "http://ncode.syosetu.com/novelview/infotop/ncode/x12345/"
    data(
      'valid' => ["x12345", expected],
      'unified to downcase?' => ["X12345", expected]
    )
    def test_url?(data)
      ncode, expected = data
      info = Yomou::NovelInfo::PageParser.new(ncode)
      assert_equal(expected, info.url)
    end
  end
end
```
assistant