spec/zenlish/lex/lexeme_spec.rb in zenlish-0.1.25 vs spec/zenlish/lex/lexeme_spec.rb in zenlish-0.2.00

- old
+ new

@@ -1,37 +1,52 @@ # frozen_string_literal: true require_relative '../../spec_helper' # Use the RSpec framework require_relative '../../../lib/zenlish/wclasses/all_word_classes' require_relative '../../../lib/zenlish/lex/lexical_entry' +require_relative '../../../lib/zenlish/feature/feature_struct_def_bearer' require_relative '../../../lib/zenlish/lex/lexeme' # Load the class under test module Zenlish module Lex describe Lexeme do - let(:sample_wclass) { WClasses::CommonNoun.new } - let(:sample_lemma) { 'thing' } - let(:sample_entry) { LexicalEntry.new(sample_lemma) } + include Feature::FeatureStructDefBearer + + let(:a_wclass) { WClasses::CommonNoun.new } + let(:a_lemma) { 'people' } + let(:an_entry) { LexicalEntry.new(a_lemma) } + let(:a_feat_struct_def) { + { 'NUMBER' => enumeration(:plural) } + } - subject { Lexeme.new(sample_wclass, sample_entry) } + subject { Lexeme.new(a_wclass, an_entry) } context 'Initialization:' do - it 'should be initialized with a word class and a lexical entry' do - expect { Lexeme.new(sample_wclass, sample_entry) }.not_to raise_error + it 'could be initialized with a word class and a lexical entry' do + expect { Lexeme.new(a_wclass, an_entry) }.not_to raise_error end + + it 'could be initialized with a w. class, lexical ent., feature hash' do + expect { Lexeme.new(a_wclass, an_entry, a_feat_struct_def) }.not_to raise_error + end it 'should know its word class' do - expect(subject.wclass).to eq(sample_wclass) + expect(subject.wclass).to eq(a_wclass) end it 'should know its lexical entry' do - expect(subject.entry).to eq(sample_entry) + expect(subject.entry).to eq(an_entry) end end # context context 'Provided services:' do it 'should know its lemma' do - expect(subject.lemma).to eq(sample_lemma) + expect(subject.lemma).to eq(a_lemma) + end + + it 'should know its own feature defs' do + instance = Lexeme.new(a_wclass, an_entry, a_feat_struct_def) + expect(instance['NUMBER'].default.val).to eq(:plural) end end # context end # describe end # module end # module