From f80deb195f9e1e304e4c30099619ff2c2ab85b7d Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Fri, 5 Nov 2010 11:50:26 -0700 Subject: [PATCH] Add a test suite and an .each iterator on Language class. --- lib/speakeasy/language.rb | 10 ++++++++++ spec/language_spec.rb | 32 ++++++++++++++++++++++++++++++++ spec/spec_helper.rb | 3 +++ 3 files changed, 45 insertions(+) create mode 100644 spec/language_spec.rb create mode 100644 spec/spec_helper.rb diff --git a/lib/speakeasy/language.rb b/lib/speakeasy/language.rb index 43ef457..e72947c 100644 --- a/lib/speakeasy/language.rb +++ b/lib/speakeasy/language.rb @@ -14,6 +14,16 @@ def self.supported_language_ids end end + # Public: Iterates over all supported languages + # + # Returns an enumator over the list of supported languages + def self.each(&block) + languages = Dir.glob("#{DATA_DIR}/*").map do |file| + Language.new(File.basename(file)) + end + languages.each(&block) + end + def initialize(language) filename = File.join(DATA_DIR, language) diff --git a/spec/language_spec.rb b/spec/language_spec.rb new file mode 100644 index 0000000..e866c60 --- /dev/null +++ b/spec/language_spec.rb @@ -0,0 +1,32 @@ +require File.dirname(__FILE__) + "/spec_helper" + +describe "A Language" do + SupportedLanguages = 15 + + it "can list the supported language ids" do + Speakeasy::Language.supported_language_ids.size.should == SupportedLanguages + end + + it "can iterate over all supported languages" do + Speakeasy::Language.each.to_a.size.should == SupportedLanguages + end + + context "(German)" + subject do + Speakeasy::Language.new("de") + end + it "has codepoints" do + subject.respond_to? :codepoints + subject.codepoints.is_a? Array + end + + it "has a native name" do + subject.respond_to? :native_name + subject.native_name.should == "Deutsch" + end + + it "has a anglicized name" do + subject.respond_to? :anglicized_name + subject.anglicized_name.should == "German" + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..03476b5 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,3 @@ +require 'rubygems' +require File.dirname(__FILE__)+'/../lib/speakeasy' +require 'rspec'