Skip to content

A set of automated, self-documenting tests verifying the behaviour of Go bindings to the LMDB API, applying behaviour-driven development through the Cucumber framework for Golang

Notifications You must be signed in to change notification settings

joel-ling/lmdb-bdd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

$ go test
Feature: LMDB
  In order to verify the effects of software interacting with LMDB
  As a software engineer practising behaviour-driven development
  I need to establish some baseline observations

  Scenario: Get non-existent record                                           # features/lmdb.feature:6
    Given there is a new LMDB environment "env"                               # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    When I get a record "key" in DB "deebee" of environment "env"             # get-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getRecord
    Then I should see an error "MDB_NOTFOUND"                                 # see-error.go:19 -> github.com/joel-ling/lmdb-bdd/test.seeError
    And the ID of last committed transaction in environment "env" should be 0 # id-last-commit.go:21 -> github.com/joel-ling/lmdb-bdd/test.idLastCommit

  Scenario: Put record                                                         # features/lmdb.feature:12
    Given there is a new LMDB environment "env"                                # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    When I put a record "key" "value" in DB "deebee" of environment "env"      # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    Then the ID of last committed transaction in environment "env" should be 1 # id-last-commit.go:21 -> github.com/joel-ling/lmdb-bdd/test.idLastCommit

  Scenario: Put and then get record                                           # features/lmdb.feature:17
    Given there is a new LMDB environment "env"                               # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    When I put a record "key" "value" in DB "deebee" of environment "env"     # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And I get a record "key" in DB "deebee" of environment "env"              # get-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getRecord
    Then I should see a value "value"                                         # see-value.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeValue
    And I should see no error                                                 # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    And the ID of last committed transaction in environment "env" should be 1 # id-last-commit.go:21 -> github.com/joel-ling/lmdb-bdd/test.idLastCommit

  Scenario: Get record put in different environment                         # features/lmdb.feature:25
    Given there is a new LMDB environment "primary"                         # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    And there is a new LMDB environment "secondary"                         # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    And there is a record "key" "value" in DB "DB" of environment "primary" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    When I get a record "key" in DB "DB" of environment "secondary"         # get-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getRecord
    Then I should see an error "MDB_NOTFOUND"                               # see-error.go:19 -> github.com/joel-ling/lmdb-bdd/test.seeError

  Scenario: Get records using a cursor                                # features/lmdb.feature:32
    Given there is a new LMDB environment "env"                       # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    And there is a record "41" "A" in DB "ASCII" of environment "env" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And there is a record "43" "C" in DB "ASCII" of environment "env" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And there is a record "42" "B" in DB "ASCII" of environment "env" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    When I open a cursor to DB "ASCII" of environment "env"           # open-cursor.go:18 -> github.com/joel-ling/lmdb-bdd/test.openCursor
    And I get the next record using the cursor                        # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a record "41" "A"                               # see-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeRecord
    And I should see no error                                         # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                       # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a record "42" "B"                               # see-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeRecord
    And I should see no error                                         # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                       # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a record "43" "C"                               # see-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeRecord
    And I should see no error                                         # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                       # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see an error "MDB_NOTFOUND"                         # see-error.go:19 -> github.com/joel-ling/lmdb-bdd/test.seeError

  Scenario: Get records using a cursor, resetting and renewing read transaction # features/lmdb.feature:50
    Given there is a new LMDB environment "env"                                 # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    And there is a record "41" "A" in DB "ASCII" of environment "env"           # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And there is a record "42" "B" in DB "ASCII" of environment "env"           # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And there is a record "43" "C" in DB "ASCII" of environment "env"           # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    When I open a cursor to DB "ASCII" of environment "env"                     # open-cursor.go:18 -> github.com/joel-ling/lmdb-bdd/test.openCursor
    And I get the next record using the cursor                                  # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a record "41" "A"                                         # see-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeRecord
    And I should see no error                                                   # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                                 # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a record "42" "B"                                         # see-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeRecord
    And I should see no error                                                   # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I reset the transaction relating to the cursor                         # reset-cursor.go:18 -> github.com/joel-ling/lmdb-bdd/test.resetCursor
    And I renew the transaction relating to the cursor, and the cursor          # renew-cursor.go:18 -> github.com/joel-ling/lmdb-bdd/test.renewCursor
    And I get the next record using the cursor, specifying the previous key     # get-next-record-set.go:19 -> github.com/joel-ling/lmdb-bdd/test.getNextRecordSet
    Then I should see a record "43" "C"                                         # see-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeRecord
    And I should see no error                                                   # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError

  Scenario: List databases in environment                                # features/lmdb.feature:68
    Given there is a new LMDB environment "env"                          # new-lmdb-env.go:19 -> github.com/joel-ling/lmdb-bdd/test.newLMDBEnv
    And there is a record "key" "value" in DB "db0" of environment "env" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And there is a record "key" "value" in DB "db1" of environment "env" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    And there is a record "key" "value" in DB "db2" of environment "env" # put-record.go:25 -> github.com/joel-ling/lmdb-bdd/test.putRecord
    When I open a cursor to the root database of environment "env"       # open-cursor-root.go:18 -> github.com/joel-ling/lmdb-bdd/test.openCursorRoot
    And I get the next record using the cursor                           # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a key "db0"                                        # see-key.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeKey
    And I should see no error                                            # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                          # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a key "db1"                                        # see-key.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeKey
    And I should see no error                                            # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                          # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see a key "db2"                                        # see-key.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeKey
    And I should see no error                                            # see-no-error.go:18 -> github.com/joel-ling/lmdb-bdd/test.seeNoError
    When I get the next record using the cursor                          # get-next-record.go:18 -> github.com/joel-ling/lmdb-bdd/test.getNextRecord
    Then I should see an error "MDB_NOTFOUND"                            # see-error.go:19 -> github.com/joel-ling/lmdb-bdd/test.seeError
7 scenarios (7 passed)
66 steps (66 passed)
26.43273ms
PASS
ok  	github.com/joel-ling/lmdb-bdd	0.032s

About

A set of automated, self-documenting tests verifying the behaviour of Go bindings to the LMDB API, applying behaviour-driven development through the Cucumber framework for Golang

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published