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