sciolyff 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/sciolyff +1 -1
- data/lib/sciolyff/placings.rb +5 -6
- data/lib/sciolyff/teams.rb +9 -0
- data/lib/sciolyff/tournament.rb +11 -0
- data/lib/sciolyff.rb +29 -0
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9d439db52050ce2e14cdefb6e5d2520d1105dbea5dbe49a4cf5a5e83323a30bd
         | 
| 4 | 
            +
              data.tar.gz: 1f6611b0af9696973430b849c5241a61ef9d23fa254db9cba12b4b08d3c8647d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2901fb2fdb8e8e7aa26e9cc97cd1c2c0989d1cc18233f1cd9b038c724dae54530b64be62d812abc03a753f92bed46763df2d487a7b377471d9559bfc809049d9
         | 
| 7 | 
            +
              data.tar.gz: 61b9fca3f88e142116e211cf576b6751d98e99ba7a464433a96af2ec401b9f6a71acf4879ea247f6612965a65e5672b81264790e812cfb8006252e128190879c
         | 
    
        data/bin/sciolyff
    CHANGED
    
    
    
        data/lib/sciolyff/placings.rb
    CHANGED
    
    | @@ -76,15 +76,14 @@ module SciolyFF | |
| 76 76 | 
             
                    assert_includes [true, false], placing[:tie]
         | 
| 77 77 | 
             
                    next unless placing[:tie]
         | 
| 78 78 |  | 
| 79 | 
            -
                     | 
| 79 | 
            +
                    all_paired = @placings.select do |p_other|
         | 
| 80 80 | 
             
                      p_other.instance_of?(Hash) &&
         | 
| 81 81 | 
             
                        p_other != placing &&
         | 
| 82 82 | 
             
                        p_other[:event] == placing[:event] &&
         | 
| 83 | 
            -
                        p_other[: | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
                     | 
| 87 | 
            -
                    assert has_pair,
         | 
| 83 | 
            +
                        p_other[:place] == placing[:place]
         | 
| 84 | 
            +
                    end.all? { |p_other| p_other[:tie] }
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                    assert all_paired,
         | 
| 88 87 | 
             
                           "The event #{placing[:event]} has unpaired ties at "\
         | 
| 89 88 | 
             
                           "#{placing[:place]}"
         | 
| 90 89 | 
             
                  end
         | 
    
        data/lib/sciolyff/teams.rb
    CHANGED
    
    | @@ -83,5 +83,14 @@ module SciolyFF | |
| 83 83 | 
             
                                  .map { |t| t[:number] }
         | 
| 84 84 | 
             
                  assert_nil numbers.uniq!
         | 
| 85 85 | 
             
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                def test_each_suffix_is_unique_per_school
         | 
| 88 | 
            +
                  @teams.select { |t| t.instance_of? Hash }
         | 
| 89 | 
            +
                        .group_by { |t| [t[:school], t[:state], t[:city]] }
         | 
| 90 | 
            +
                        .each do |group, teams|
         | 
| 91 | 
            +
                    assert_nil teams.map { |t| t[:suffix] }.compact.uniq!,
         | 
| 92 | 
            +
                               "#{group} has the same suffix for multiple teams"
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                end
         | 
| 86 95 | 
             
              end
         | 
| 87 96 | 
             
            end
         | 
    
        data/lib/sciolyff/tournament.rb
    CHANGED
    
    | @@ -23,6 +23,7 @@ module SciolyFF | |
| 23 23 |  | 
| 24 24 | 
             
                def test_does_not_have_extra_info
         | 
| 25 25 | 
             
                  info = Set.new %i[name location level division state year date]
         | 
| 26 | 
            +
                  info << :'short name'
         | 
| 26 27 | 
             
                  assert Set.new(@tournament.keys).subset? info
         | 
| 27 28 | 
             
                end
         | 
| 28 29 |  | 
| @@ -31,6 +32,16 @@ module SciolyFF | |
| 31 32 | 
             
                  assert_instance_of String, @tournament[:name]
         | 
| 32 33 | 
             
                end
         | 
| 33 34 |  | 
| 35 | 
            +
                def test_has_valid_short_name
         | 
| 36 | 
            +
                  skip unless @tournament.key? :'short name'
         | 
| 37 | 
            +
                  assert @tournament.key?(:name), 'Cannot have short name without name'
         | 
| 38 | 
            +
                  assert_instance_of String, @tournament[:'short name']
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  skip unless @tournament[:name].instance_of? String
         | 
| 41 | 
            +
                  assert @tournament[:'short name'].length < @tournament[:name].length,
         | 
| 42 | 
            +
                         'Length of short name must be shorter than length of name'
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 34 45 | 
             
                def test_has_valid_location
         | 
| 35 46 | 
             
                  skip unless @tournament.key? :location
         | 
| 36 47 | 
             
                  assert_instance_of String, @tournament[:location]
         | 
    
        data/lib/sciolyff.rb
    CHANGED
    
    | @@ -170,7 +170,36 @@ module SciolyFF | |
| 170 170 | 
             
                  medal_counts(team_number_a)
         | 
| 171 171 | 
             
                    .zip(medal_counts(team_number_b))
         | 
| 172 172 | 
             
                    .map { |count| count.last - count.first }
         | 
| 173 | 
            +
                    .find(proc { break_second_tie(team_number_a, team_number_b) },
         | 
| 174 | 
            +
                          &:nonzero?)
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                def break_second_tie(team_number_a, team_number_b)
         | 
| 178 | 
            +
                  cmp = points_from_trial(team_number_a) - points_from_trial(team_number_b)
         | 
| 179 | 
            +
                  cmp.zero? ? break_third_tie(team_number_a, team_number_b) : cmp
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                def break_third_tie(team_number_a, team_number_b)
         | 
| 183 | 
            +
                  medal_counts_from_trial(team_number_a)
         | 
| 184 | 
            +
                    .zip(medal_counts_from_trial(team_number_b))
         | 
| 185 | 
            +
                    .map { |count| count.last - count.first }
         | 
| 173 186 | 
             
                    .find(proc { team_number_a <=> team_number_b }, &:nonzero?)
         | 
| 174 187 | 
             
                end
         | 
| 188 | 
            +
             | 
| 189 | 
            +
                def points_from_trial(team_number)
         | 
| 190 | 
            +
                  @placings_by_team[team_number]
         | 
| 191 | 
            +
                    .values
         | 
| 192 | 
            +
                    .select { |p| @events_by_name[p[:event]][:trial] }
         | 
| 193 | 
            +
                    .sum { |p| event_points(team_number, p[:event]) }
         | 
| 194 | 
            +
                end
         | 
| 195 | 
            +
             | 
| 196 | 
            +
                def medal_counts_from_trial(team_number)
         | 
| 197 | 
            +
                  (1..(@teams_by_number.count + 2)).map do |m|
         | 
| 198 | 
            +
                    @events_by_name
         | 
| 199 | 
            +
                      .values
         | 
| 200 | 
            +
                      .select { |e| e[:trial] }
         | 
| 201 | 
            +
                      .count { |e| event_points(team_number, e[:name]) == m }
         | 
| 202 | 
            +
                  end
         | 
| 203 | 
            +
                end
         | 
| 175 204 | 
             
              end
         | 
| 176 205 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sciolyff
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5. | 
| 4 | 
            +
              version: 0.5.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Em Zhan
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-07- | 
| 11 | 
            +
            date: 2019-07-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: minitest
         | 
| @@ -81,7 +81,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 81 81 | 
             
              requirements:
         | 
| 82 82 | 
             
              - - ">="
         | 
| 83 83 | 
             
                - !ruby/object:Gem::Version
         | 
| 84 | 
            -
                  version:  | 
| 84 | 
            +
                  version: 2.6.0
         | 
| 85 85 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
              requirements:
         | 
| 87 87 | 
             
              - - ">="
         |