Sha256: ae6e0616fa320d978a78098b086e7958d22fffe24cbfde2e5d0ade90fd75e78d

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

require 'secure_marshal.rb'

describe "secure marshaling", :shared=>true do
  it "should encode/decode integers" do
    check(20)
    check(-30)
    check(123874)
    checkAdd(3874,"crap")
  end
  
  it "should en/dec nil/true/false" do
    check(nil)
    check(true)
    check(false)
  end
  
  it "should encode/decode floats" do
    checkAdd(347374.34,"lsdf")
  end 
  
  it "should encode/decode strings" do
    checkAdd("HI","lsdf")
    checkAdd("HI:HI","lsdf")
    checkAdd("123:HIdff","lsdf:sdfjhd")
  end
  
  it "should decode's:i:3:muh'correctly" do
    Secure::Marshal::load('s:i:3:muh').should == "muh"
  end
  it "should encode/decode arrays" do
    check([1,2,3,"muh"])
    check([])
    check(nil)
    check([nil])
  end
  
  it "should encode/decode hashes" do
    check({1=>2,"asd"=>5.6,[1]=>"kjsdf"})
  end
  
  it "should encode symbols" do
    check(:symbol)
  end 
  
  it "should encode simple structs" do
    S=Struct.new(:hupe,:bla)
    s=S.new("123",348)
    pp "S:",s
    check(s)
  end

  it "should support dissected strings" do
    s="abcdefghijkl"
    check(s)
    m=Secure::Marshal::dump(s)
    pp s,m
    split=m.length/2
    a=m[0...split]
    b=m[split..-1]
    puts "---1"
    (a+b).should == m
    d=Secure::Data.new(a)
    lambda{Secure::Marshal::load(d)}.should raise_error(Secure::Marshal::OutOfData)
    Secure::Marshal::load(m).should == s
    Secure::Marshal::load(a+b).should == s
  end
  
    
  it "should support any character in strings" do
    (0..255).each{|i|
      s=i.to_s+" "+i.chr
      check(s)
    }

    s=(0..255).to_a.map{|i|i.chr}.join("")
    #s=s*2
    s=s[(s.length/2)..(s.length*17/32)]
    check(s)
  end


private
  
  def checkAdd(input,add)
    data=Secure::Marshal::dump(input)+add
    Secure::Marshal::load(data).should == input
  end
  
  def check(input)
    data=Secure::Marshal::dump(input)
    Secure::Marshal::load(data).should == input
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appswarm-0.0.1 lib/appswarm/spec/secure_marshal_spec.rb