Commit 1c5fb174 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Case-insensitive sort of tree nodes.

parent 15210c4b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ module JsDuck
    # Comparson method that sorts package nodes before class nodes.
    def compare(a, b)
      if a[:cls] == b[:cls]
        a[:text] <=> b[:text]
        a[:text].casecmp(b[:text])
      else
        a[:cls] == "package" ? -1 : 1
      end
+25 −0
Original line number Diff line number Diff line
@@ -165,3 +165,28 @@ describe JsDuck::Tree, "uppercase package name" do
  end

end

describe JsDuck::Tree do

  before do
    @tree = JsDuck::Tree.new.create([
        JsDuck::Class.new({:tagname => :class, :name => "Dingo"}),
        JsDuck::Class.new({:tagname => :class, :name => "Beeta"}),
        JsDuck::Class.new({:tagname => :class, :name => "cheetah"}),
        JsDuck::Class.new({:tagname => :class, :name => "pkg.Class"}),
        JsDuck::Class.new({:tagname => :class, :name => "Abba"}),
      ])
  end

  it "sorts packages first" do
    @tree[:children][0][:text].should == 'pkg'
  end

  it "sorts classes case-insensitively" do
    @tree[:children][1][:text].should == 'Abba'
    @tree[:children][2][:text].should == 'Beeta'
    @tree[:children][3][:text].should == 'cheetah'
    @tree[:children][4][:text].should == 'Dingo'
  end

end