spec/hash_spec.rb in nydp-0.0.8 vs spec/hash_spec.rb in nydp-0.0.9

- old
+ new

@@ -2,10 +2,36 @@ describe Nydp::Hash do let(:vm) { Nydp::VM.new } + describe "#to_ruby" do + it "converts ruby symbol key to nydp symbol key" do + hash = Nydp::Hash.new + hash[sym "boo"] = 42 + + rhash = hash.to_ruby + expect(rhash[:boo]).to eq 42 + end + + it "converts ruby string key to nydp string key" do + hash = Nydp::Hash.new + hash[Nydp::StringAtom.new "boo"] = 42 + + rhash = hash.to_ruby + expect(rhash["boo"]).to eq 42 + end + + it "uses integer keys unconverted" do + hash = Nydp::Hash.new + hash[21] = 42 + + rhash = hash.to_ruby + expect(rhash[21]).to eq 42 + end + end + describe "nydp hashes" do describe "new hash" do it "returns a new Nydp hash" do Nydp::Builtin::Hash.new.invoke vm, Nydp.NIL h = vm.pop_arg @@ -78,9 +104,28 @@ args = [ ahash, k ] Nydp::Builtin::HashGet.new(ns).invoke vm, pair_list(args) expect(vm.pop_arg).to eq Nydp::StringAtom.new("avalue") + end + + it "converts ruby nil to nydp value" do + k = sym("keysym") + args = [ ahash, k ] + + Nydp::Builtin::HashGet.new(ns).invoke vm, pair_list(args) + + expect(vm.pop_arg).to eq Nydp.NIL + end + + it "converts ruby true to nydp value" do + ahash[:keysym] = true + k = sym("keysym") + args = [ ahash, k ] + + Nydp::Builtin::HashGet.new(ns).invoke vm, pair_list(args) + + expect(vm.pop_arg).to eq Nydp.T end end describe "hash keys" do it "returns a list of keys" do