diff options
| author | Thiago de Arruda <tpadilha84@gmail.com> | 2015-07-24 12:24:25 -0300 | 
|---|---|---|
| committer | Thiago de Arruda <tpadilha84@gmail.com> | 2015-08-13 08:46:21 -0300 | 
| commit | a6e0d35d2da3ee4270ddb712410ea0c8c55b0f0f (patch) | |
| tree | cb5c01ffad37d69721daae3c3c3ae45ada87c197 /test/unit/queue_spec.lua | |
| parent | 1a7a020b68ed50d52dafa4ccc72a12686942e6b7 (diff) | |
| download | rneovim-a6e0d35d2da3ee4270ddb712410ea0c8c55b0f0f.tar.gz rneovim-a6e0d35d2da3ee4270ddb712410ea0c8c55b0f0f.tar.bz2 rneovim-a6e0d35d2da3ee4270ddb712410ea0c8c55b0f0f.zip | |
queue: Implement a more flexible event queue
Diffstat (limited to 'test/unit/queue_spec.lua')
| -rw-r--r-- | test/unit/queue_spec.lua | 123 | 
1 files changed, 123 insertions, 0 deletions
| diff --git a/test/unit/queue_spec.lua b/test/unit/queue_spec.lua new file mode 100644 index 0000000000..9326c1cad6 --- /dev/null +++ b/test/unit/queue_spec.lua @@ -0,0 +1,123 @@ +local helpers = require("test.unit.helpers") + +local ffi     = helpers.ffi +local eq      = helpers.eq + +local queue = helpers.cimport("./test/unit/fixtures/queue.h") + +describe('queue', function() +  local parent, child1, child2, child3 + +  local function put(q, str) +    queue.ut_queue_put(q, str) +  end + +  local function get(q) +    return ffi.string(queue.ut_queue_get(q)) +  end + +  local function free(q) +    queue.queue_free(q) +  end + +  before_each(function() +    parent = queue.queue_new_parent(ffi.NULL, ffi.NULL) +    child1 = queue.queue_new_child(parent) +    child2 = queue.queue_new_child(parent) +    child3 = queue.queue_new_child(parent) +    put(child1, 'c1i1') +    put(child1, 'c1i2') +    put(child2, 'c2i1') +    put(child1, 'c1i3') +    put(child2, 'c2i2') +    put(child2, 'c2i3') +    put(child2, 'c2i4') +    put(child3, 'c3i1') +    put(child3, 'c3i2') +  end) + +  it('removing from parent removes from child', function() +    eq('c1i1', get(parent)) +    eq('c1i2', get(parent)) +    eq('c2i1', get(parent)) +    eq('c1i3', get(parent)) +    eq('c2i2', get(parent)) +    eq('c2i3', get(parent)) +    eq('c2i4', get(parent)) +  end) + +  it('removing from child removes from parent', function() +    eq('c2i1', get(child2)) +    eq('c2i2', get(child2)) +    eq('c1i1', get(child1)) +    eq('c1i2', get(parent)) +    eq('c1i3', get(parent)) +    eq('c2i3', get(parent)) +    eq('c2i4', get(parent)) +  end) + +  it('removing from child at the beginning of parent', function() +    eq('c1i1', get(child1)) +    eq('c1i2', get(child1)) +    eq('c2i1', get(parent)) +  end) + +  it('removing from parent after get from parent and put to child', function() +    eq('c1i1', get(parent)) +    eq('c1i2', get(parent)) +    eq('c2i1', get(parent)) +    eq('c1i3', get(parent)) +    eq('c2i2', get(parent)) +    eq('c2i3', get(parent)) +    eq('c2i4', get(parent)) +    eq('c3i1', get(parent)) +    put(child1, 'c1i11') +    put(child1, 'c1i22') +    eq('c3i2', get(parent)) +    eq('c1i11', get(parent)) +    eq('c1i22', get(parent)) +  end) + +  it('removing from parent after get and put to child', function() +    eq('c1i1', get(child1)) +    eq('c1i2', get(child1)) +    eq('c2i1', get(child2)) +    eq('c1i3', get(child1)) +    eq('c2i2', get(child2)) +    eq('c2i3', get(child2)) +    eq('c2i4', get(child2)) +    eq('c3i1', get(child3)) +    eq('c3i2', get(parent)) +    put(child1, 'c1i11') +    put(child2, 'c2i11') +    put(child1, 'c1i12') +    eq('c2i11', get(child2)) +    eq('c1i11', get(parent)) +    eq('c1i12', get(parent)) +  end) + +  it('put after removing from child at the end of parent', function() +    eq('c3i1', get(child3)) +    eq('c3i2', get(child3)) +    put(child1, 'c1i11') +    put(child2, 'c2i11') +    eq('c1i1', get(parent)) +    eq('c1i2', get(parent)) +    eq('c2i1', get(parent)) +    eq('c1i3', get(parent)) +    eq('c2i2', get(parent)) +    eq('c2i3', get(parent)) +    eq('c2i4', get(parent)) +    eq('c1i11', get(parent)) +    eq('c2i11', get(parent)) +  end) + +  it('removes from parent queue when child is freed', function() +    free(child2) +    eq('c1i1', get(parent)) +    eq('c1i2', get(parent)) +    eq('c1i3', get(parent)) +    eq('c3i1', get(child3)) +    eq('c3i2', get(child3)) +  end) +end) | 
