From 1fbdb24fff7cd84b5506cb0c7092fdcdc867ec12 Mon Sep 17 00:00:00 2001 From: icebaker Date: Sat, 13 May 2023 18:51:02 -0300 Subject: adding missing files --- spec/logic/cartridge/affixes_spec.rb | 91 ++++++++++++++++++++++++++++++++ spec/logic/cartridge/interaction_spec.rb | 47 +++++++++++++++++ spec/logic/cartridge/streaming_spec.rb | 75 ++++++++++++++++++++++++++ spec/logic/helpers/hash_spec.rb | 19 +++++++ 4 files changed, 232 insertions(+) create mode 100644 spec/logic/cartridge/affixes_spec.rb create mode 100644 spec/logic/cartridge/interaction_spec.rb create mode 100644 spec/logic/cartridge/streaming_spec.rb create mode 100644 spec/logic/helpers/hash_spec.rb (limited to 'spec/logic') diff --git a/spec/logic/cartridge/affixes_spec.rb b/spec/logic/cartridge/affixes_spec.rb new file mode 100644 index 0000000..8f08e1d --- /dev/null +++ b/spec/logic/cartridge/affixes_spec.rb @@ -0,0 +1,91 @@ +# frozen_string_literal: true + +require 'yaml' + +require_relative '../../../logic/cartridge/affixes' + +RSpec.describe NanoBot::Logic::Cartridge::Affixes do + context 'interfaces' do + let(:cartridge) { load_cartridge('affixes.yml') } + + it 'gets the expected affixes' do + expect(described_class.get(cartridge, :repl, :input, :prefix)).to eq('E') + expect(described_class.get(cartridge, :repl, :input, :suffix)).to eq('F') + expect(described_class.get(cartridge, :repl, :output, :prefix)).to eq('G') + expect(described_class.get(cartridge, :repl, :output, :suffix)).to eq('H') + + expect(described_class.get(cartridge, :eval, :input, :prefix)).to eq('I') + expect(described_class.get(cartridge, :eval, :input, :suffix)).to eq('J') + expect(described_class.get(cartridge, :eval, :output, :prefix)).to eq('K') + expect(described_class.get(cartridge, :eval, :output, :suffix)).to eq('L') + end + end + + context 'interfaces fallback' do + let(:cartridge) { load_cartridge('affixes.yml') } + + it 'gets the expected affixes' do + cartridge[:interfaces][:repl][:input].delete(:prefix) + cartridge[:interfaces][:repl][:input].delete(:suffix) + cartridge[:interfaces][:eval][:input].delete(:prefix) + cartridge[:interfaces][:eval][:input].delete(:suffix) + + cartridge[:interfaces][:repl][:output].delete(:prefix) + cartridge[:interfaces][:repl][:output].delete(:suffix) + cartridge[:interfaces][:eval][:output].delete(:prefix) + cartridge[:interfaces][:eval][:output].delete(:suffix) + + expect(described_class.get(cartridge, :repl, :input, :prefix)).to eq('A') + expect(described_class.get(cartridge, :repl, :input, :suffix)).to eq('B') + expect(described_class.get(cartridge, :repl, :output, :prefix)).to eq('C') + expect(described_class.get(cartridge, :repl, :output, :suffix)).to eq('D') + + expect(described_class.get(cartridge, :eval, :input, :prefix)).to eq('A') + expect(described_class.get(cartridge, :eval, :input, :suffix)).to eq('B') + expect(described_class.get(cartridge, :eval, :output, :prefix)).to eq('C') + expect(described_class.get(cartridge, :eval, :output, :suffix)).to eq('D') + end + end + + context 'interfaces nil' do + let(:cartridge) { load_cartridge('affixes.yml') } + + it 'gets the expected affixes' do + cartridge[:interfaces][:repl][:input][:prefix] = nil + cartridge[:interfaces][:repl][:input][:suffix] = nil + cartridge[:interfaces][:eval][:input][:prefix] = nil + cartridge[:interfaces][:eval][:input][:suffix] = nil + + cartridge[:interfaces][:repl][:output][:prefix] = nil + cartridge[:interfaces][:repl][:output][:suffix] = nil + cartridge[:interfaces][:eval][:output][:prefix] = nil + cartridge[:interfaces][:eval][:output][:suffix] = nil + + expect(described_class.get(cartridge, :repl, :input, :prefix)).to be_nil + expect(described_class.get(cartridge, :repl, :input, :suffix)).to be_nil + expect(described_class.get(cartridge, :repl, :output, :prefix)).to be_nil + expect(described_class.get(cartridge, :repl, :output, :suffix)).to be_nil + + expect(described_class.get(cartridge, :eval, :input, :prefix)).to be_nil + expect(described_class.get(cartridge, :eval, :input, :suffix)).to be_nil + expect(described_class.get(cartridge, :eval, :output, :prefix)).to be_nil + expect(described_class.get(cartridge, :eval, :output, :suffix)).to be_nil + end + end + + context 'default' do + let(:cartridge) { {} } + + it 'gets the expected affixes' do + expect(described_class.get(cartridge, :repl, :input, :prefix)).to be_nil + expect(described_class.get(cartridge, :repl, :input, :suffix)).to be_nil + expect(described_class.get(cartridge, :repl, :output, :prefix)).to eq("\n") + expect(described_class.get(cartridge, :repl, :output, :suffix)).to eq("\n") + + expect(described_class.get(cartridge, :eval, :input, :prefix)).to be_nil + expect(described_class.get(cartridge, :eval, :input, :suffix)).to be_nil + expect(described_class.get(cartridge, :eval, :output, :prefix)).to be_nil + expect(described_class.get(cartridge, :eval, :output, :suffix)).to eq("\n") + end + end +end diff --git a/spec/logic/cartridge/interaction_spec.rb b/spec/logic/cartridge/interaction_spec.rb new file mode 100644 index 0000000..347ac45 --- /dev/null +++ b/spec/logic/cartridge/interaction_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require 'yaml' + +require_relative '../../../logic/cartridge/interaction' + +RSpec.describe NanoBot::Logic::Cartridge::Interaction do + context 'input' do + let(:cartridge) { load_cartridge('affixes.yml') } + + it 'prepares the input' do + expect(described_class.input(cartridge, :repl, 'hello')).to eq( + { content: 'hello', fennel: nil, lua: nil, prefix: 'E', suffix: 'F' } + ) + + expect(described_class.input({}, :repl, 'hello')).to eq( + { content: 'hello', fennel: nil, lua: nil, prefix: nil, suffix: nil } + ) + + expect(described_class.input(cartridge, :eval, 'hello')).to eq( + { content: 'hello', fennel: nil, lua: nil, prefix: 'I', suffix: 'J' } + ) + + expect(described_class.input({}, :eval, 'hello')).to eq( + { content: 'hello', fennel: nil, lua: nil, prefix: nil, suffix: nil } + ) + end + + it 'prepares the non-streamming output' do + expect(described_class.output(cartridge, :repl, { message: 'hello' }, false, true)).to eq( + { message: { content: 'hello', fennel: nil, lua: nil } } + ) + + expect(described_class.output({}, :repl, { message: 'hello' }, false, true)).to eq( + { message: { content: 'hello', fennel: nil, lua: nil } } + ) + + expect(described_class.output(cartridge, :eval, { message: 'hello' }, false, true)).to eq( + { message: { content: 'hello', fennel: nil, lua: nil } } + ) + + expect(described_class.output({}, :eval, { message: 'hello' }, false, true)).to eq( + { message: { content: 'hello', fennel: nil, lua: nil } } + ) + end + end +end diff --git a/spec/logic/cartridge/streaming_spec.rb b/spec/logic/cartridge/streaming_spec.rb new file mode 100644 index 0000000..e5ad012 --- /dev/null +++ b/spec/logic/cartridge/streaming_spec.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +require 'yaml' + +require_relative '../../../logic/cartridge/streaming' + +RSpec.describe NanoBot::Logic::Cartridge::Streaming do + context 'provider' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:provider][:settings][:stream] = false + expect(described_class.enabled?(cartridge, :repl)).to be(false) + end + end + + context 'repl' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:interfaces][:repl][:output][:stream] = false + expect(described_class.enabled?(cartridge, :repl)).to be(false) + end + end + + context 'interface + repl' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:interfaces][:output][:stream] = false + cartridge[:interfaces][:repl][:output][:stream] = true + expect(described_class.enabled?(cartridge, :repl)).to be(true) + end + end + + context 'interface' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:interfaces][:output][:stream] = false + cartridge[:interfaces][:repl][:output].delete(:stream) + expect(described_class.enabled?(cartridge, :repl)).to be(false) + end + end + + context '- repl' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:interfaces][:repl][:output].delete(:stream) + expect(described_class.enabled?(cartridge, :repl)).to be(true) + end + end + + context '- interface' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:interfaces][:output].delete(:stream) + cartridge[:interfaces][:repl][:output].delete(:stream) + expect(described_class.enabled?(cartridge, :repl)).to be(true) + end + end + + context '- provider' do + let(:cartridge) { load_cartridge('streaming.yml') } + + it 'checks if stream is enabled' do + cartridge[:provider][:settings].delete(:stream) + cartridge[:interfaces][:output].delete(:stream) + cartridge[:interfaces][:repl][:output].delete(:stream) + expect(described_class.enabled?(cartridge, :repl)).to be(true) + end + end +end diff --git a/spec/logic/helpers/hash_spec.rb b/spec/logic/helpers/hash_spec.rb new file mode 100644 index 0000000..09012c8 --- /dev/null +++ b/spec/logic/helpers/hash_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require_relative '../../../logic/helpers/hash' + +RSpec.describe NanoBot::Logic::Helpers::Hash do + it 'symbolizes keys' do + expect(described_class.symbolize_keys({ 'a' => 'b', 'c' => { 'd' => ['e'] } })).to eq( + { a: 'b', c: { d: ['e'] } } + ) + + expect(described_class.fetch({ a: 'b', c: { d: ['e'] } }, %i[c d])).to eq( + ['e'] + ) + + expect(described_class.fetch({ a: 'b', c: { d: ['e'] } }, %i[c e])).to be_nil + + expect(described_class.fetch({ a: 'b', c: { d: ['e'] } }, %i[a b])).to be_nil + end +end -- cgit v1.2.3