Feature#5861 の時と違って、色々とバックグランドの話が提示されたので私は説得されました。

+1


> +  def test_numericcmp
> +    assert_equal(-1, "2.1.0".numericcmp("2.1.1"))
> +    assert_equal(-1, "2.1.9".numericcmp("2.1.10"))
> +    assert_equal( 0, "a1".numericcmp("a1"))
> +    assert_equal( 1, "aa".numericcmp("a1"))
> +    assert_equal(-1, "a1".numericcmp("aa"))
> +    assert_equal(-1, "a1".numericcmp("a01"))
> +    assert_equal(-1, "a0001".numericcmp("a00001"))

ここちょっと不思議なんですけど、辞書順だと後者が小さくなって、数値だと同値だと思うのですが、
なんで前者が小さくなるべきなんでしょうか。どこかのファイラーだとそうなってるということ?

あと、ふなばさんの指摘が気になっているので、バージョン文字列以外に想定しているユースーケースが
あれば教えて下さい。


> +    assert_equal( 0, "a1a".numericcmp("a1a"))
> +    assert_equal( 1, "a1b".numericcmp("a1a"))
> +    assert_equal(-1, "a9a".numericcmp("a10a"))
> +    assert_equal( 1, "b".numericcmp("a"))
> +    assert_equal( 0, "\u30421".numericcmp("\u30421"))
> +    assert_equal( 1, "\u3042\u3042".numericcmp("\u30421"))
> +    assert_equal(-1, "\u30421".numericcmp("\u3042\u3042"))
> +    assert_equal(-1, "\u30421".numericcmp("\u304201"))
> +    assert_equal(-1, "\u30420001".numericcmp("\u304200001"))
> +    assert_equal( 0, "\u30421\u3042".numericcmp("\u30421\u3042"))
> +    assert_equal( 1, "\u30421\u3044".numericcmp("\u30421\u3042"))
> +    assert_equal(-1, "\u30429\u3042".numericcmp("\u304210\u3042"))
> +    assert_equal( 1, "\u3044".numericcmp("\u3042"))
> +  end
> +
>    def test_upcase2
>      assert_equal("\u3042AB", "\u3042aB".upcase)
>    end
> ```