You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

73 lines
2.0 KiB

require 'spec_helper'
require 'squib/graphics/embedding_utils'
describe Squib::EmbeddingUtils do
context(:indices) do
it 'returns nothing when given nothing' do
expect(Squib::EmbeddingUtils.indices('just some text', [])).to eq({})
end
it 'returns emptiness for given keys that are not in the string' do
str = 'just some text'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => []
})
end
it 'returns correctly for one key, one time' do
str = 'some :tool: text'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11]
})
end
it 'handles one key, multiple times' do
str = 'some :tool: text :tool:'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11, 17..23]
})
end
it 'handles one key, multiple times next to each other' do
str = 'some :tool::tool: text'
keys = [':tool:']
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11, 11..17]
})
end
it 'handles multiple keys, one time each' do
str = 'some :tool: heart text'
keys = %w(:tool: heart)
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [5..11],
'heart' => [12..17]
})
end
it 'handles multiple keys, multiple times each' do
str = ':tool:some :tool: heart text heart tool'
keys = %w(:tool: heart)
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [0..6, 11..17],
'heart' => [18..23, 29..34]
})
end
it 'handles multibyte properly' do
str = '💡 📷 :tool: heart text'
keys = %w(:tool: heart 💡)
expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
':tool:' => [10..16],
'heart' => [17..22],
'💡' => [3..4]
})
end
end
end