act_with_flags 0.2.3 → 3.1.0
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/.github/workflows/rake.yml +30 -0
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.watchr +29 -16
- data/Appraisals +12 -4
- data/Gemfile +7 -6
- data/Gemfile.lock +156 -125
- data/MIT-LICENSE +1 -1
- data/README.md +77 -10
- data/Rakefile +5 -5
- data/act_with_flags.gemspec +20 -20
- data/gemfiles/rails_6.0.gemfile +4 -1
- data/gemfiles/{rails_5.2.gemfile → rails_6.1.gemfile} +3 -1
- data/gemfiles/rails_7.0.gemfile +15 -0
- data/lib/act_with_flags/admin.rb +5 -48
- data/lib/act_with_flags/clear.rb +30 -0
- data/lib/act_with_flags/define.rb +6 -35
- data/lib/act_with_flags/flags.rb +65 -0
- data/lib/act_with_flags/print.rb +21 -27
- data/lib/act_with_flags/utils.rb +33 -13
- data/lib/act_with_flags/version.rb +9 -13
- data/lib/act_with_flags.rb +28 -33
- data/test/any_all_none_test.rb +6 -9
- data/test/benchmark_test.rb +73 -0
- data/test/clear_test.rb +5 -7
- data/test/coding_check_add_test.rb +29 -0
- data/test/coding_coverage_test.rb +19 -0
- data/test/coding_mask2d_test.rb +25 -0
- data/test/coding_null_test.rb +29 -0
- data/test/coding_one_test.rb +26 -0
- data/test/coding_reset_test.rb +18 -0
- data/test/inheritance_any_test.rb +9 -33
- data/test/inheritance_test.rb +7 -10
- data/test/internal/app/controllers/orders_controller.rb +1 -3
- data/test/internal/app/models/order.rb +1 -5
- data/test/internal/config/routes.rb +1 -1
- data/test/internal/db/schema.rb +6 -7
- data/test/legacy_test.rb +8 -9
- data/test/mask_test.rb +6 -7
- data/test/null_test.rb +3 -5
- data/test/one_test.rb +7 -9
- data/test/origin_test.rb +7 -26
- data/test/origins_test.rb +57 -0
- data/test/range_test.rb +89 -0
- data/test/remove_from_test.rb +3 -4
- data/test/test_helper.rb +9 -9
- metadata +47 -67
- data/.rubocop.yml +0 -8
- data/.travis.yml +0 -23
- data/test/internal_benchmark_test.rb +0 -52
- data/test/internal_check_add_test.rb +0 -36
- data/test/internal_null_test.rb +0 -29
- data/test/internal_one_test.rb +0 -27
- data/test/reset_test.rb +0 -17
| @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            require "test_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "Several origins" do
         | 
| 4 | 
            +
              let(:order) { Order.create }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def setup
         | 
| 7 | 
            +
                reset_order
         | 
| 8 | 
            +
                Order.add_to_flags :a # origin is :flags
         | 
| 9 | 
            +
                Order.add_to_flags :b, b2: 63 # origin is :flags
         | 
| 10 | 
            +
                Order.add_to_flags :c, origin: :origin1
         | 
| 11 | 
            +
                Order.add_to_flags d: 3, origin: :origin2
         | 
| 12 | 
            +
                Order.add_to_flags :d2, origin: :origin2
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              it "checks flags" do
         | 
| 16 | 
            +
                order.a = true
         | 
| 17 | 
            +
                order.b = true
         | 
| 18 | 
            +
                order.b2 = true
         | 
| 19 | 
            +
                assert_equal 0x8000000000000003, order.flags
         | 
| 20 | 
            +
                order.b2 = false
         | 
| 21 | 
            +
                assert_equal 0x03, order.flags
         | 
| 22 | 
            +
                assert_equal 0x01, Order.act_with_flags.mask(:a) # should work
         | 
| 23 | 
            +
                assert_equal 0x8000000000000002, Order.act_with_flags.mask(:b, :b2) # should work
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              it "checks origin1" do
         | 
| 27 | 
            +
                order.c = true
         | 
| 28 | 
            +
                assert_equal 0x01, order.origin1
         | 
| 29 | 
            +
                assert_equal 0x01, Order.act_with_flags.mask(:c)
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it "checks origin2" do
         | 
| 33 | 
            +
                order.d = true
         | 
| 34 | 
            +
                assert_equal 0x08, order.origin2
         | 
| 35 | 
            +
                assert_equal 0x18, Order.act_with_flags.mask(:d2, :d)
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              it "should reject mask for different origins" do
         | 
| 39 | 
            +
                assert_raises(RuntimeError) {
         | 
| 40 | 
            +
                  Order.act_with_flags.mask :c, :d
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it "allows any? et all for same origins" do
         | 
| 45 | 
            +
                order.flags_any? :b, :b2
         | 
| 46 | 
            +
                order.flags_all? :d2, :d
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              it "rejects any? et all for different origins" do
         | 
| 50 | 
            +
                assert_raises(RuntimeError) {
         | 
| 51 | 
            +
                  order.flags_any? :a, :c
         | 
| 52 | 
            +
                }
         | 
| 53 | 
            +
                assert_raises(RuntimeError) {
         | 
| 54 | 
            +
                  order.flags_all? :d2, :c
         | 
| 55 | 
            +
                }
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
            end
         | 
    
        data/test/range_test.rb
    ADDED
    
    | @@ -0,0 +1,89 @@ | |
| 1 | 
            +
            require "test_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "range" do
         | 
| 4 | 
            +
              def setup
         | 
| 5 | 
            +
                reset_order
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              it "runs without range" do
         | 
| 9 | 
            +
                Order.add_to_flags :a
         | 
| 10 | 
            +
                Order.add_to_flags :b
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it "runs with range(inside)" do
         | 
| 14 | 
            +
                Order.add_to_flags range: 2..4, a: 2
         | 
| 15 | 
            +
                Order.add_to_flags range: 2..4, b: 3
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              it "fails with outside range" do
         | 
| 19 | 
            +
                assert_raises(RangeError) { Order.add_to_flags range: 2..3, a: 1 }
         | 
| 20 | 
            +
                assert_raises(RangeError) { Order.add_to_flags range: 2..3, b: 4 }
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              it "runs at borders" do
         | 
| 24 | 
            +
                Order.add_to_flags range: 2..3, a: 2
         | 
| 25 | 
            +
                Order.add_to_flags range: 2..3, b: 3
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              it "runs with ... as range" do
         | 
| 29 | 
            +
                Order.add_to_flags range: 2...3, a: 2
         | 
| 30 | 
            +
                assert_raises(RangeError) { Order.add_to_flags range: 2...3, b: 3 }
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              it "detects wrong range" do
         | 
| 34 | 
            +
                assert_raises(RangeError) { Order.add_to_flags range: "a".."z", a: 2 }
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              it "tests range 0..0 no position" do
         | 
| 38 | 
            +
                Order.add_to_flags :a, range: 0..0
         | 
| 39 | 
            +
                assert_raises(RangeError) { Order.add_to_flags :b, range: 0..0 }
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              it "tests range ..0 no position" do
         | 
| 43 | 
            +
                Order.add_to_flags :a, range: ..0
         | 
| 44 | 
            +
                assert_raises(RangeError) { Order.add_to_flags :b, range: ..0 }
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it "tests range ...0 no position" do
         | 
| 48 | 
            +
                assert_raises(RangeError) { Order.add_to_flags :a, range: ...0 }
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              # YAGNI
         | 
| 52 | 
            +
              # # includes range: ( .. 3 ) equivalent to range: ..3
         | 
| 53 | 
            +
              # n = 100
         | 
| 54 | 
            +
              # (0..n).each do |i|
         | 
| 55 | 
            +
              #   rng = ..i
         | 
| 56 | 
            +
              #
         | 
| 57 | 
            +
              #   (0..i).each do |j|
         | 
| 58 | 
            +
              #     it "tests range ..#{i} with position #{j}" do
         | 
| 59 | 
            +
              #       Order.add_to_flags a: j, range: rng
         | 
| 60 | 
            +
              #     end
         | 
| 61 | 
            +
              #   end
         | 
| 62 | 
            +
              #
         | 
| 63 | 
            +
              #   it "fails range ..#{i} with position overflow" do
         | 
| 64 | 
            +
              #     assert_raises(RangeError) { Order.add_to_flags b: (i + 1), range: rng }
         | 
| 65 | 
            +
              #   end
         | 
| 66 | 
            +
              # end
         | 
| 67 | 
            +
              #
         | 
| 68 | 
            +
              # it "runs ii plus" do
         | 
| 69 | 
            +
              #   ii = 0
         | 
| 70 | 
            +
              #   (0..2).each { |íí|
         | 
| 71 | 
            +
              #     sym = "x#{ii}".to_sym
         | 
| 72 | 
            +
              #     j = f(ii, ii + 1) # filler
         | 
| 73 | 
            +
              #     rand j
         | 
| 74 | 
            +
              #     Order.add_to_flags :range => ii..f(íí, íí), sym => (ii += 1)
         | 
| 75 | 
            +
              #     orden = Order.new
         | 
| 76 | 
            +
              #     refute orden.send("#{sym}?") # checks that accessor is active
         | 
| 77 | 
            +
              #     orden.x0 = true # checks that first accessor is still there
         | 
| 78 | 
            +
              #     assert orden.x0?
         | 
| 79 | 
            +
              #   }
         | 
| 80 | 
            +
              # end
         | 
| 81 | 
            +
              #
         | 
| 82 | 
            +
              # private
         | 
| 83 | 
            +
              #
         | 
| 84 | 
            +
              # def f(x, y)
         | 
| 85 | 
            +
              #   return y + 1 if x == 0
         | 
| 86 | 
            +
              #   return f(x - 1, 1) if y == 0
         | 
| 87 | 
            +
              #   f(x - 1, f(x, y - 1))
         | 
| 88 | 
            +
              # end
         | 
| 89 | 
            +
            end
         | 
    
        data/test/remove_from_test.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require "test_helper"
         | 
| 2 2 |  | 
| 3 | 
            -
            describe  | 
| 3 | 
            +
            describe "Delete from Flags" do
         | 
| 4 4 | 
             
              let(:order) { Order.create }
         | 
| 5 5 |  | 
| 6 6 | 
             
              def setup
         | 
| @@ -9,10 +9,9 @@ describe 'Delete from Flags' do | |
| 9 9 | 
             
                order.a = order.b = order.c = true
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
              it  | 
| 12 | 
            +
              it "remove accessors" do
         | 
| 13 13 | 
             
                Order.remove_from_flags :b
         | 
| 14 14 | 
             
                assert_raises { order.b }
         | 
| 15 15 | 
             
                refute Order.respond_to?(:b)
         | 
| 16 16 | 
             
              end
         | 
| 17 | 
            -
             | 
| 18 17 | 
             
            end
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -1,19 +1,19 @@ | |
| 1 | 
            -
            if ENV[ | 
| 2 | 
            -
              require  | 
| 1 | 
            +
            if ENV["COVERAGE"]
         | 
| 2 | 
            +
              require "simplecov"
         | 
| 3 3 | 
             
              SimpleCov.start do
         | 
| 4 | 
            -
                add_filter  | 
| 4 | 
            +
                add_filter "/test/"
         | 
| 5 5 | 
             
              end
         | 
| 6 6 | 
             
            end
         | 
| 7 7 |  | 
| 8 8 | 
             
            require "combustion"
         | 
| 9 9 | 
             
            Combustion.path = "test/internal"
         | 
| 10 | 
            -
            Combustion.initialize! : | 
| 10 | 
            +
            Combustion.initialize! :active_record
         | 
| 11 11 |  | 
| 12 | 
            -
            require  | 
| 13 | 
            -
            require  | 
| 14 | 
            -
            require  | 
| 15 | 
            -
            #require 'capybara/rails'
         | 
| 12 | 
            +
            require "rails/test_help"
         | 
| 13 | 
            +
            require "minitest/autorun"
         | 
| 14 | 
            +
            require "minitest/benchmark"
         | 
| 15 | 
            +
            # require 'capybara/rails'
         | 
| 16 16 |  | 
| 17 17 | 
             
            def reset_order
         | 
| 18 | 
            -
              Order.act_with_flags | 
| 18 | 
            +
              Order.act_with_flags&.reset
         | 
| 19 19 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,111 +1,110 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: act_with_flags
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 3.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dittmar Krall
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-08-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - " | 
| 17 | 
            +
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: ' | 
| 19 | 
            +
                    version: '0'
         | 
| 20 20 | 
             
              type: :development
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - - " | 
| 24 | 
            +
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: ' | 
| 26 | 
            +
                    version: '0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: rake
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: ' | 
| 33 | 
            +
                    version: '0'
         | 
| 34 34 | 
             
              type: :development
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 38 | 
            +
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: ' | 
| 40 | 
            +
                    version: '0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: appraisal
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - - " | 
| 45 | 
            +
                - - ">="
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '0'
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - - " | 
| 52 | 
            +
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: combustion
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - - " | 
| 59 | 
            +
                - - ">="
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '0'
         | 
| 62 62 | 
             
              type: :development
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - - " | 
| 66 | 
            +
                - - ">="
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '0'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: minitest
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 | 
            -
                - - " | 
| 73 | 
            +
                - - ">="
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: ' | 
| 75 | 
            +
                    version: '0'
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 | 
            -
                - - " | 
| 80 | 
            +
                - - ">="
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 82 | 
            +
                    version: '0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: sqlite3
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 | 
            -
                - - " | 
| 87 | 
            +
                - - ">="
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: ' | 
| 89 | 
            +
                    version: '0'
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 | 
            -
                - - " | 
| 94 | 
            +
                - - ">="
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: ' | 
| 97 | 
            -
            description: Handles flags in a Rails model instance
         | 
| 96 | 
            +
                    version: '0'
         | 
| 97 | 
            +
            description: Handles flags/booleans in a Rails model instance
         | 
| 98 98 | 
             
            email:
         | 
| 99 | 
            -
            - dittmar.krall@ | 
| 99 | 
            +
            - dittmar.krall@matiq.com
         | 
| 100 100 | 
             
            executables: []
         | 
| 101 101 | 
             
            extensions: []
         | 
| 102 102 | 
             
            extra_rdoc_files: []
         | 
| 103 103 | 
             
            files:
         | 
| 104 | 
            +
            - ".github/workflows/rake.yml"
         | 
| 104 105 | 
             
            - ".gitignore"
         | 
| 105 | 
            -
            - ".rubocop.yml"
         | 
| 106 106 | 
             
            - ".ruby-gemset"
         | 
| 107 107 | 
             
            - ".ruby-version"
         | 
| 108 | 
            -
            - ".travis.yml"
         | 
| 109 108 | 
             
            - ".watchr"
         | 
| 110 109 | 
             
            - Appraisals
         | 
| 111 110 | 
             
            - Gemfile
         | 
| @@ -114,16 +113,26 @@ files: | |
| 114 113 | 
             
            - README.md
         | 
| 115 114 | 
             
            - Rakefile
         | 
| 116 115 | 
             
            - act_with_flags.gemspec
         | 
| 117 | 
            -
            - gemfiles/rails_5.2.gemfile
         | 
| 118 116 | 
             
            - gemfiles/rails_6.0.gemfile
         | 
| 117 | 
            +
            - gemfiles/rails_6.1.gemfile
         | 
| 118 | 
            +
            - gemfiles/rails_7.0.gemfile
         | 
| 119 119 | 
             
            - lib/act_with_flags.rb
         | 
| 120 120 | 
             
            - lib/act_with_flags/admin.rb
         | 
| 121 | 
            +
            - lib/act_with_flags/clear.rb
         | 
| 121 122 | 
             
            - lib/act_with_flags/define.rb
         | 
| 123 | 
            +
            - lib/act_with_flags/flags.rb
         | 
| 122 124 | 
             
            - lib/act_with_flags/print.rb
         | 
| 123 125 | 
             
            - lib/act_with_flags/utils.rb
         | 
| 124 126 | 
             
            - lib/act_with_flags/version.rb
         | 
| 125 127 | 
             
            - test/any_all_none_test.rb
         | 
| 128 | 
            +
            - test/benchmark_test.rb
         | 
| 126 129 | 
             
            - test/clear_test.rb
         | 
| 130 | 
            +
            - test/coding_check_add_test.rb
         | 
| 131 | 
            +
            - test/coding_coverage_test.rb
         | 
| 132 | 
            +
            - test/coding_mask2d_test.rb
         | 
| 133 | 
            +
            - test/coding_null_test.rb
         | 
| 134 | 
            +
            - test/coding_one_test.rb
         | 
| 135 | 
            +
            - test/coding_reset_test.rb
         | 
| 127 136 | 
             
            - test/inheritance_any_test.rb
         | 
| 128 137 | 
             
            - test/inheritance_test.rb
         | 
| 129 138 | 
             
            - test/internal/app/assets/config/manifest.js
         | 
| @@ -136,23 +145,21 @@ files: | |
| 136 145 | 
             
            - test/internal/config/routes.rb
         | 
| 137 146 | 
             
            - test/internal/config/secrets.yml
         | 
| 138 147 | 
             
            - test/internal/db/schema.rb
         | 
| 139 | 
            -
            - test/internal_benchmark_test.rb
         | 
| 140 | 
            -
            - test/internal_check_add_test.rb
         | 
| 141 | 
            -
            - test/internal_null_test.rb
         | 
| 142 | 
            -
            - test/internal_one_test.rb
         | 
| 143 148 | 
             
            - test/legacy_test.rb
         | 
| 144 149 | 
             
            - test/mask_test.rb
         | 
| 145 150 | 
             
            - test/null_test.rb
         | 
| 146 151 | 
             
            - test/one_test.rb
         | 
| 147 152 | 
             
            - test/origin_test.rb
         | 
| 153 | 
            +
            - test/origins_test.rb
         | 
| 154 | 
            +
            - test/range_test.rb
         | 
| 148 155 | 
             
            - test/remove_from_test.rb
         | 
| 149 | 
            -
            - test/reset_test.rb
         | 
| 150 156 | 
             
            - test/string_test.rb
         | 
| 151 157 | 
             
            - test/test_helper.rb
         | 
| 152 | 
            -
            homepage: http:// | 
| 158 | 
            +
            homepage: http://matiq.com
         | 
| 153 159 | 
             
            licenses:
         | 
| 154 160 | 
             
            - MIT
         | 
| 155 | 
            -
            metadata: | 
| 161 | 
            +
            metadata:
         | 
| 162 | 
            +
              source_code_uri: https://github.com/matique/act_with_flags
         | 
| 156 163 | 
             
            post_install_message: 
         | 
| 157 164 | 
             
            rdoc_options: []
         | 
| 158 165 | 
             
            require_paths:
         | 
| @@ -168,35 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 168 175 | 
             
                - !ruby/object:Gem::Version
         | 
| 169 176 | 
             
                  version: '0'
         | 
| 170 177 | 
             
            requirements: []
         | 
| 171 | 
            -
            rubygems_version: 3. | 
| 178 | 
            +
            rubygems_version: 3.3.7
         | 
| 172 179 | 
             
            signing_key: 
         | 
| 173 180 | 
             
            specification_version: 4
         | 
| 174 181 | 
             
            summary: act_with_flags gem
         | 
| 175 | 
            -
            test_files:
         | 
| 176 | 
            -
            - test/any_all_none_test.rb
         | 
| 177 | 
            -
            - test/clear_test.rb
         | 
| 178 | 
            -
            - test/inheritance_any_test.rb
         | 
| 179 | 
            -
            - test/inheritance_test.rb
         | 
| 180 | 
            -
            - test/internal/app/assets/config/manifest.js
         | 
| 181 | 
            -
            - test/internal/app/controllers/application_controller.rb
         | 
| 182 | 
            -
            - test/internal/app/controllers/orders_controller.rb
         | 
| 183 | 
            -
            - test/internal/app/models/application_record.rb
         | 
| 184 | 
            -
            - test/internal/app/models/order.rb
         | 
| 185 | 
            -
            - test/internal/app/views/layouts/application.html.erb
         | 
| 186 | 
            -
            - test/internal/config/database.yml
         | 
| 187 | 
            -
            - test/internal/config/routes.rb
         | 
| 188 | 
            -
            - test/internal/config/secrets.yml
         | 
| 189 | 
            -
            - test/internal/db/schema.rb
         | 
| 190 | 
            -
            - test/internal_benchmark_test.rb
         | 
| 191 | 
            -
            - test/internal_check_add_test.rb
         | 
| 192 | 
            -
            - test/internal_null_test.rb
         | 
| 193 | 
            -
            - test/internal_one_test.rb
         | 
| 194 | 
            -
            - test/legacy_test.rb
         | 
| 195 | 
            -
            - test/mask_test.rb
         | 
| 196 | 
            -
            - test/null_test.rb
         | 
| 197 | 
            -
            - test/one_test.rb
         | 
| 198 | 
            -
            - test/origin_test.rb
         | 
| 199 | 
            -
            - test/remove_from_test.rb
         | 
| 200 | 
            -
            - test/reset_test.rb
         | 
| 201 | 
            -
            - test/string_test.rb
         | 
| 202 | 
            -
            - test/test_helper.rb
         | 
| 182 | 
            +
            test_files: []
         | 
    
        data/.rubocop.yml
    DELETED
    
    
    
        data/.travis.yml
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            language: ruby
         | 
| 2 | 
            -
            sudo: false
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            bundler_args: --without production
         | 
| 5 | 
            -
            #before_install:
         | 
| 6 | 
            -
            #- gem update bundler --no-document
         | 
| 7 | 
            -
            #- gem update bundler --no-rdoc --no-ri
         | 
| 8 | 
            -
            script: "bundle exec rake test"
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            rvm:
         | 
| 11 | 
            -
              - 2.6.6
         | 
| 12 | 
            -
            #  - 2.6.5
         | 
| 13 | 
            -
            #  - 2.6.4
         | 
| 14 | 
            -
              - 2.6.1
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            gemfile:
         | 
| 17 | 
            -
              - gemfiles/rails_6.0.gemfile
         | 
| 18 | 
            -
              - gemfiles/rails_5.2.gemfile
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            matrix:
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            notifications:
         | 
| 23 | 
            -
              email: false
         | 
| @@ -1,52 +0,0 @@ | |
| 1 | 
            -
            # For development purposes; do not waste your tine reading it!
         | 
| 2 | 
            -
            # YAGNI
         | 
| 3 | 
            -
            # rubocop:disable all
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            require 'test_helper'
         | 
| 6 | 
            -
            require 'benchmark'
         | 
| 7 | 
            -
            require 'benchmark/ips'
         | 
| 8 | 
            -
            # ENV['MORE'] = 'true'
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            describe 'Internal timings' do
         | 
| 11 | 
            -
              let(:order) { Order.create }
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              def setup
         | 
| 14 | 
            -
                reset_order
         | 
| 15 | 
            -
                Order.add_to_flags :blocked
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              it 'times ips' do
         | 
| 19 | 
            -
                return  unless ENV['MORE']
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                Benchmark.ips do |x|
         | 
| 22 | 
            -
                  x.report('assign true : ')        { order.blocked = true }
         | 
| 23 | 
            -
                  x.report('assign false: ')        { order.blocked = false }
         | 
| 24 | 
            -
                  x.report('assign "false": ')      { order.blocked = 'false' }
         | 
| 25 | 
            -
                  x.report('x = order.blocked? ')   { x = order.blocked? }
         | 
| 26 | 
            -
                  x.report('x = order.blocked ')    { x = order.blocked }
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  x.compare!
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
            end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            class BenchFoo < Minitest::Benchmark
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              def bench_order_blocked
         | 
| 37 | 
            -
                return  unless ENV['MORE']
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                n = 1_000_000
         | 
| 40 | 
            -
                n = 100_000
         | 
| 41 | 
            -
                n = 10_000
         | 
| 42 | 
            -
                Order.add_to_flags :blocked2
         | 
| 43 | 
            -
                order = Order.create
         | 
| 44 | 
            -
                assert_performance_constant do |input|
         | 
| 45 | 
            -
                  n.times do
         | 
| 46 | 
            -
                    order.blocked2 = true
         | 
| 47 | 
            -
                    order.blocked2 = !order.blocked2
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
              end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
            end
         | 
| @@ -1,36 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe 'Internal check add flag' do
         | 
| 4 | 
            -
              let(:admin) { Order.act_with_flags }
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              def setup
         | 
| 7 | 
            -
                reset_order
         | 
| 8 | 
            -
                Order.add_to_flags a: 1, b: 7, c: 3
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              it 'skip reserved position' do
         | 
| 12 | 
            -
                Order.add_to_flags :xx
         | 
| 13 | 
            -
                assert_equal 0, admin.position(:xx)
         | 
| 14 | 
            -
                Order.add_to_flags :yy
         | 
| 15 | 
            -
                assert_equal 2, admin.position(:yy)
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              it 'rejects redefinition' do
         | 
| 19 | 
            -
                Order.add_to_flags :z
         | 
| 20 | 
            -
                assert_raises { Order.add_to_flags :z }
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
              it 'rejects reuse of position' do
         | 
| 24 | 
            -
                assert_raises { Order.add_to_flags qq: 1 }
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
              it 'coverage to_s' do
         | 
| 28 | 
            -
                res = admin.to_s
         | 
| 29 | 
            -
                puts res  if ENV['MORE']
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
              it 'coverage position raise' do
         | 
| 33 | 
            -
                assert_raises { admin.position(:aaaa) }
         | 
| 34 | 
            -
              end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
            end
         | 
    
        data/test/internal_null_test.rb
    DELETED
    
    | @@ -1,29 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe 'Internal Null' do
         | 
| 4 | 
            -
              let(:admin) { Order.act_with_flags }
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              def setup
         | 
| 7 | 
            -
                reset_order
         | 
| 8 | 
            -
                Order.add_to_flags
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              it 'respond to act_with_flags' do
         | 
| 12 | 
            -
                assert Order.respond_to?(:act_with_flags)
         | 
| 13 | 
            -
                refute_nil Order.act_with_flags
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              it 'tests to_boolean' do
         | 
| 17 | 
            -
                assert admin.to_boolean(true)
         | 
| 18 | 
            -
                refute admin.to_boolean(false)
         | 
| 19 | 
            -
                assert_raises { admin.to_boolean(nil) }
         | 
| 20 | 
            -
                assert_raises { admin.to_boolean(2) }
         | 
| 21 | 
            -
                assert_raises { admin.to_boolean('unknown') }
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              it 'tests a simple administration: names' do
         | 
| 25 | 
            -
                refute_nil admin.names
         | 
| 26 | 
            -
                assert_equal [], admin.names
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            end
         | 
    
        data/test/internal_one_test.rb
    DELETED
    
    | @@ -1,27 +0,0 @@ | |
| 1 | 
            -
            # rubocop: disable all
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'test_helper'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            describe 'Internal One Flag' do
         | 
| 6 | 
            -
              let(:flag)  { :blocked }
         | 
| 7 | 
            -
              let(:admin) { Order.act_with_flags }
         | 
| 8 | 
            -
              let(:order) { Order.new }
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              def setup
         | 
| 11 | 
            -
                reset_order
         | 
| 12 | 
            -
                Order.add_to_flags flag
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              it 'test Order.act_with_flags' do
         | 
| 16 | 
            -
                refute_nil admin
         | 
| 17 | 
            -
                assert_equal admin, order.class.act_with_flags
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              it 'checks definition of methods for flag' do
         | 
| 21 | 
            -
                msg = "method '#{flag}' not defined'
         | 
| 22 | 
            -
                assert order.respond_to?("#{flag}"), msg
         | 
| 23 | 
            -
                assert order.respond_to?("#{flag}?"), msg
         | 
| 24 | 
            -
                assert order.respond_to?("#{flag}="), msg
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
            end
         | 
    
        data/test/reset_test.rb
    DELETED
    
    | @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe 'Testing reset' do
         | 
| 4 | 
            -
              let(:order) { Order.new }
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              def setup
         | 
| 7 | 
            -
                reset_order
         | 
| 8 | 
            -
                Order.add_to_flags :a
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              it 'reset hard' do
         | 
| 12 | 
            -
                refute_equal [], Order.add_to_flags.names
         | 
| 13 | 
            -
                Order.act_with_flags&.reset
         | 
| 14 | 
            -
                assert_equal [], Order.add_to_flags.names
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            end
         |