Sha256: 6bfa5efe5e7dbf4137f615e96a9e9b0904e9a1c455d2f5e89033031518c167f0

Contents?: true

Size: 1.96 KB

Versions: 2

Compression:

Stored size: 1.96 KB

Contents

require 'spec_helper'
require 'scatter_swap'

describe "#hash" do
  it "should be 10 digits" do
    100.times do |integer|
      ScatterSwap.hash(integer).to_s.length.should == 10
    end
  end

  it "should not be sequential" do
    first = ScatterSwap.hash(1)
    second = ScatterSwap.hash(2)
    second.should_not eql(first.to_i + 1)
  end

  it "should be reversable" do
    100.times do |integer|
      hashed = ScatterSwap.hash(integer)
      ScatterSwap.reverse_hash(hashed).to_i.should == integer
    end
  end
end

describe "#swapper_map" do
  before do
    @map_set = []
    s = ScatterSwap::Hasher.new(1)
    10.times do |digit|
      @map_set.push s.swapper_map(digit)
    end
  end

  it "should create a unique map array for each digit" do
    @map_set.length.should == 10
    @map_set.uniq.length.should == 10
  end

  it "should include all 10 digits in each map" do
    @map_set.each do |map|
      map.length.should == 10
      map.uniq.length.should == 10
    end
  end
end

describe "#scatter" do
  it "should return a number different from original" do
    100.times do |integer|
      s = ScatterSwap::Hasher.new(integer)
      original_array = s.working_array
      s.scatter
      s.working_array.should_not == original_array
    end
  end

  it "should be reversable" do
    100.times do |integer|
      s = ScatterSwap::Hasher.new(integer)
      original_array = s.working_array.clone
      s.scatter
      s.unscatter
      s.working_array.should == original_array
    end
  end
end

describe "#swap" do
  it "should be different from original" do
    100.times do |integer|
      s = ScatterSwap::Hasher.new(integer)
      original_array = s.working_array.clone
      s.swap
      s.working_array.should_not == original_array
    end
  end

  it "should be reversable" do
    100.times do |integer|
      s = ScatterSwap::Hasher.new(integer)
      original_array = s.working_array.clone
      s.swap
      s.unswap
      s.working_array.should == original_array
    end
  end
end  

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
scatter_swap-0.0.3 spec/scatter_swap_spec.rb
scatter_swap-0.0.2 spec/scatter_swap_spec.rb