spec/shared/property_set_spec.rb (173 lines of code) (raw):

# encoding: UTF-8 # Copyright 2012 Twitter, Inc # http://www.apache.org/licenses/LICENSE-2.0 require 'spec_helper' describe TwitterCldr::Shared::PropertySet do let(:properties_hash) { {} } let(:property_set) { described_class.new(properties_hash) } describe '#age' do it 'defaults to "Unassigned"' do expect(property_set.age).to eq(['Unassigned']) end it 'returns the age when one is supplied' do properties_hash.merge!('Age' => ['foo']) expect(property_set.age).to eq(['foo']) end end describe '#joining_type' do it 'defaults to "Non_Joining"' do expect(property_set.joining_type).to eq(['Non_Joining']) end it 'defaults to the joining type that corresponds to the general category (if set)' do properties_hash.merge!('General_Category' => ['Mn']) expect(property_set.joining_type).to eq(['Transparent']) end it 'returns the joining type when one is supplied' do properties_hash.merge!('Joining_Type' => ['foo']) expect(property_set.joining_type).to eq(['foo']) end end describe '#bidi_paired_bracket_type' do it 'defaults to "None"' do expect(property_set.bidi_paired_bracket_type).to eq(['None']) end it 'returns the bracket type when one is supplied' do properties_hash.merge!('Bidi_Paired_Bracket_Type' => ['foo']) expect(property_set.bidi_paired_bracket_type).to eq(['foo']) end end describe '#block' do it 'defaults to "No_Block"' do expect(property_set.block).to eq(['No_Block']) end it 'returns the block when one is supplied' do properties_hash.merge!('Block' => ['foo']) expect(property_set.block).to eq(['foo']) end end describe '#east_asian_width' do it 'defaults to "N"' do expect(property_set.east_asian_width).to eq(['N']) end it 'returns the width when one is supplied' do properties_hash.merge!('East_Asian_Width' => ['foo']) expect(property_set.east_asian_width).to eq(['foo']) end end describe '#grapheme_cluster_break' do it 'defaults to "Other"' do expect(property_set.grapheme_cluster_break).to eq(['Other']) end it 'returns the break when one is supplied' do properties_hash.merge!('Grapheme_Cluster_Break' => ['foo']) expect(property_set.grapheme_cluster_break).to eq(['foo']) end end describe '#hangul_syllable_type' do it 'defaults to "Not_Applicable"' do expect(property_set.hangul_syllable_type).to eq(['Not_Applicable']) end it 'returns the syllable type when one is supplied' do properties_hash.merge!('Hangul_Syllable_Type' => ['foo']) expect(property_set.hangul_syllable_type).to eq(['foo']) end end describe '#indic_positional_category' do it 'defaults to "NA"' do expect(property_set.indic_positional_category).to eq(['NA']) end it 'returns the positional category if one is supplied' do properties_hash.merge!('Indic_Positional_Category' => ['foo']) expect(property_set.indic_positional_category).to eq(['foo']) end end describe '#indic_syllabic_category' do it 'defaults to "Other"' do expect(property_set.indic_syllabic_category).to eq(['Other']) end it 'returns the syllabic category if one is supplied' do properties_hash.merge!('Indic_Syllabic_Category' => ['foo']) expect(property_set.indic_syllabic_category).to eq(['foo']) end end describe '#jamo_short_name' do it 'defaults to "<none>"' do expect(property_set.jamo_short_name).to eq(['<none>']) end it 'returns the short name if one is supplied' do properties_hash.merge!('Jamo_Short_Name' => ['foo']) expect(property_set.jamo_short_name).to eq(['foo']) end end describe '#line_break' do it 'defaults to XX' do expect(property_set.line_break).to eq(['XX']) end it 'returns the line break category if one is supplied' do properties_hash.merge!('Line_Break' => ['foo']) expect(property_set.line_break).to eq(['foo']) end end describe '#general_category' do it 'defaults to nil' do expect(property_set.general_category).to eq([]) end it 'returns the general category if one is supplied' do properties_hash.merge!('General_Category' => ['foo']) expect(property_set.general_category).to eq(['foo']) end end describe '#script_extensions' do it 'defaults to "<script>"' do expect(property_set.script_extensions).to eq(['<script>']) end it 'returns the script extension if one is supplied' do properties_hash.merge!('Script_Extensions' => ['foo']) expect(property_set.script_extensions).to eq(['foo']) end end describe '#script' do it 'defaults to "Unknown"' do expect(property_set.script).to eq(['Unknown']) end it 'returns the script if one is supplied' do properties_hash.merge!('Script' => ['foo']) expect(property_set.script).to eq(['foo']) end end describe '#sentence_break' do it 'defaults to "Other"' do expect(property_set.sentence_break).to eq(['Other']) end it 'returns the sentence break category if one is supplied' do properties_hash.merge!('Sentence_Break' => ['foo']) expect(property_set.sentence_break).to eq(['foo']) end end describe '#word_break' do it 'defaults to "Other"' do expect(property_set.word_break).to eq(['Other']) end it 'returns the word break category if one is supplied' do properties_hash.merge!('Word_Break' => ['foo']) expect(property_set.word_break).to eq(['foo']) end end describe 'properties without defaults' do TwitterCldr::Shared::CodePoint.properties.property_names.each do |property_name| method_name = property_name.downcase if described_class::AdditionalPropertyMethods.method_defined?(method_name) describe "##{method_name}" do it 'returns true if the property has been set but has no value' do properties_hash.merge!(property_name => nil) expect(property_set.send(method_name)).to eq(true) end it 'returns false if the property has not been set' do expect(property_set.send(method_name)).to eq(false) end it 'returns the property value if it has been set' do properties_hash.merge!(property_name => ['foo']) expect(property_set.send(method_name)).to eq(['foo']) end end end end end end