# -*- coding: utf-8 -*- require 'word_counter' require 'spec_helper' describe WordCounter do let(:word_counter) { WordCounter.new("") } it "should return zero for an empty string" do expect(word_counter.count).to eq(0) end it "should count plain words delimited with spaces" do word_counter.text = "one two three four" expect(word_counter.count).to eq(4) end it "should count plain words delimited with linebreaks" do word_counter.text = "one\ntwo\nthree\nfour" expect(word_counter.count).to eq(4) end it "should count hyphenated words as one" do word_counter.text = "arm-rest is hyphenated" expect(word_counter.count).to eq(3) end it "should count contractions as one" do word_counter.text = "don't do that" expect(word_counter.count).to eq(3) end it "should not count lone html tags" do word_counter.text = "
one
twoone
twoone
two
" expect(word_counter.count).to eq(2) end %w[* ~ !? - ~* ~! |].each do |char| it "should not count a line of #{char} as word" do word_counter.text = "one
#{char*10}
two
" expect(word_counter.count).to eq(2) end end it "should count words with special charcters correctly" do word_counter.text = "zwölf naïve fiancés" expect(word_counter.count).to eq(3) end %w[— -- , / |].each do |char| it "should recognise #{char} as word delimiter" do word_counter.text = "one#{char}two#{char}three" expect(word_counter.count).to eq(3) end end %w[— -- - ! ? . , / " ' |].each do |char| it "should not count lone #{char} as words" do word_counter.text = "one #{char} two #{char} three" expect(word_counter.count).to eq(3) end end it "should handle common punctuation" do word_counter.text = "\Hey Bob,\" said Alice, 'Yay?!?'" expect(word_counter.count).to eq(5) end it "should count words not delimited with space correctly" do word_counter.text = "一个简单の栗子" expect(word_counter.count).to eq(7) end it "should count words in mixed languages correctly" do word_counter.text = "\“嘿Bob,\” Alice说,‘啊?!?’" expect(word_counter.count).to eq(5) end it "counts words in mixed languages with symbols correctly" do word_counter.text = "嘿|bob|说" expect(word_counter.count).to eq(3) end end