text: rewrite embedding to use set_shape_renderer
No more arcane unicode magic! Closes #177 Related to #170, #171, #158, #103, and #153 too.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
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
|
||||
Reference in New Issue
Block a user