From c7111150238acab22c20cc3d81206b6df821d394 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Tue, 23 Oct 2018 10:42:18 -0600 Subject: [PATCH] Add spec for SampleValues --- spec/internals/sample_values_spec.cr | 90 ++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 spec/internals/sample_values_spec.cr diff --git a/spec/internals/sample_values_spec.cr b/spec/internals/sample_values_spec.cr new file mode 100644 index 0000000..3105ca3 --- /dev/null +++ b/spec/internals/sample_values_spec.cr @@ -0,0 +1,90 @@ +require "../spec_helper" + +private def add_sample_value(values : Spectator::Internals::SampleValues, + symbol : Symbol, name : String, value : T) forall T + values.add(symbol, name, value) +end + +private def add_sample_value(symbol, name, value : T) forall T + add_sample_value(Spectator::Internals::SampleValues.empty, symbol, name, value) +end + +private def add_sample_value(symbol, value : T) forall T + add_sample_value(symbol, symbol.to_s, value) +end + +describe Spectator::Internals::SampleValues do + describe "#add" do + it "creates a new set" do + original = Spectator::Internals::SampleValues.empty + new_set = original.add(:new, "new", 123) + new_set.should_not eq(original) + end + + it "adds a new value" do + symbol = :new + value = 123 + values = add_sample_value(symbol, value) + values.get_value(symbol, typeof(value)).should eq(value) + end + end + + describe "#get_wrapper" do + it "returns a wrapper for a value" do + symbol = :new + value = 123 + values = add_sample_value(symbol, value) + wrapper = values.get_wrapper(symbol) + wrapper.should be_a(Spectator::Internals::ValueWrapper) + end + + it "returns the correct wrapper" do + symbol = :new + value = 123 + values = add_sample_value(symbol, value) + wrapper = values.get_wrapper(symbol) + wrapper.should be_a(Spectator::Internals::TypedValueWrapper(typeof(value))) + wrapper.as(Spectator::Internals::TypedValueWrapper(typeof(value))).value.should eq(value) + end + + context "with multiple values" do + it "returns the expected value" do + symbols = [:one, :two, :three] + numbers = [123, 456, 789] + values = Spectator::Internals::SampleValues.empty + symbols.zip(numbers).each do |symbol, number| + values = add_sample_value(values, symbol, symbol.to_s, number) + end + selected_symbol = symbols[1] + selected_number = numbers[1] + wrapper = values.get_wrapper(selected_symbol) + wrapper.should be_a(Spectator::Internals::TypedValueWrapper(typeof(selected_number))) + wrapper.as(Spectator::Internals::TypedValueWrapper(typeof(selected_number))).value.should eq(selected_number) + end + end + end + + describe "#get_value" do + it "returns a value" do + symbol = :new + value = 123 + values = add_sample_value(symbol, value) + values.get_value(symbol, typeof(value)).should eq(value) + end + + context "with multiple values" do + it "returns the expected value" do + symbols = [:one, :two, :three] + numbers = [123, 456, 789] + values = Spectator::Internals::SampleValues.empty + symbols.zip(numbers).each do |symbol, number| + values = add_sample_value(values, symbol, symbol.to_s, number) + end + selected_symbol = symbols[1] + selected_number = numbers[1] + value = values.get_value(selected_symbol, typeof(selected_number)) + value.should eq(selected_number) + end + end + end +end