summaryrefslogtreecommitdiff
path: root/spec/logic/cartridge/tools_spec.rb
diff options
context:
space:
mode:
authoricebaker <113217272+icebaker@users.noreply.github.com>2023-11-29 07:53:19 -0300
committerGitHub <noreply@github.com>2023-11-29 07:53:19 -0300
commit9f79a161905f5af8e331930cc77c7be10703596f (patch)
treeb2ab75665e42de79f22cca82bf03cfc49759f485 /spec/logic/cartridge/tools_spec.rb
parente1ab6853262b83f483060961f17bf895989a19c0 (diff)
parent154aa68caf50a18af5c0dff1d368fc639314e0ba (diff)
Merge pull request #5 from icebaker/ib-tools
Adding support for Spec 1.0.0: Tools (Functions)
Diffstat (limited to 'spec/logic/cartridge/tools_spec.rb')
-rw-r--r--spec/logic/cartridge/tools_spec.rb97
1 files changed, 97 insertions, 0 deletions
diff --git a/spec/logic/cartridge/tools_spec.rb b/spec/logic/cartridge/tools_spec.rb
new file mode 100644
index 0000000..d08817c
--- /dev/null
+++ b/spec/logic/cartridge/tools_spec.rb
@@ -0,0 +1,97 @@
+# frozen_string_literal: true
+
+require 'yaml'
+
+require_relative '../../../logic/cartridge/tools'
+
+RSpec.describe NanoBot::Logic::Cartridge::Tools do
+ context 'interfaces override' do
+ context 'defaults' do
+ let(:cartridge) { {} }
+
+ it 'uses default values when appropriate' do
+ expect(described_class.feedback?(cartridge, :repl, :executing)).to be(false)
+ expect(described_class.feedback?(cartridge, :eval, :executing)).to be(false)
+
+ expect(described_class.feedback?(cartridge, :repl, :responding)).to be(true)
+ expect(described_class.feedback?(cartridge, :eval, :responding)).to be(true)
+ end
+ end
+
+ context 'top-level overrides' do
+ let(:cartridge) do
+ { interfaces: { tools: { feedback: false } } }
+ end
+
+ it 'overrides default values when appropriate' do
+ expect(described_class.feedback?(cartridge, :repl, :executing)).to be(false)
+ expect(described_class.feedback?(cartridge, :eval, :executing)).to be(false)
+
+ expect(described_class.feedback?(cartridge, :repl, :responding)).to be(false)
+ expect(described_class.feedback?(cartridge, :eval, :responding)).to be(false)
+ end
+ end
+
+ context 'top-level overrides' do
+ let(:cartridge) do
+ { interfaces: { tools: { feedback: true } } }
+ end
+
+ it 'overrides default values when appropriate' do
+ expect(described_class.feedback?(cartridge, :repl, :executing)).to be(true)
+ expect(described_class.feedback?(cartridge, :eval, :executing)).to be(true)
+
+ expect(described_class.feedback?(cartridge, :repl, :responding)).to be(true)
+ expect(described_class.feedback?(cartridge, :eval, :responding)).to be(true)
+ end
+ end
+
+ context 'top-level-specific overrides' do
+ let(:cartridge) do
+ { interfaces: { tools: { executing: { feedback: false }, responding: { feedback: true } } } }
+ end
+
+ it 'overrides default values when appropriate' do
+ expect(described_class.feedback?(cartridge, :repl, :executing)).to be(false)
+ expect(described_class.feedback?(cartridge, :eval, :executing)).to be(false)
+
+ expect(described_class.feedback?(cartridge, :repl, :responding)).to be(true)
+ expect(described_class.feedback?(cartridge, :eval, :responding)).to be(true)
+ end
+ end
+
+ context 'repl interface overrides' do
+ let(:cartridge) do
+ { interfaces: {
+ tools: { executing: { feedback: false }, responding: { feedback: true } },
+ repl: { tools: { executing: { feedback: true }, responding: { feedback: false } } }
+ } }
+ end
+
+ it 'overrides default values when appropriate' do
+ expect(described_class.feedback?(cartridge, :repl, :executing)).to be(true)
+ expect(described_class.feedback?(cartridge, :eval, :executing)).to be(false)
+
+ expect(described_class.feedback?(cartridge, :repl, :responding)).to be(false)
+ expect(described_class.feedback?(cartridge, :eval, :responding)).to be(true)
+ end
+ end
+
+ context 'eval interface overrides' do
+ let(:cartridge) do
+ { interfaces: {
+ tools: { executing: { feedback: false }, responding: { feedback: true } },
+ eval: { tools: { executing: { feedback: true }, responding: { feedback: false } } }
+ } }
+ end
+
+ it 'overrides default values when appropriate' do
+ expect(described_class.feedback?(cartridge, :repl, :executing)).to be(false)
+ expect(described_class.feedback?(cartridge, :eval, :executing)).to be(true)
+
+ expect(described_class.feedback?(cartridge, :repl, :responding)).to be(true)
+ expect(described_class.feedback?(cartridge, :eval, :responding)).to be(false)
+ end
+ end
+ end
+end