File: //usr/local/rvm/gems/ruby-2.6.8/gems/sqlite3-1.4.2/test/test_database_flags.rb
require 'helper'
module SQLite3
class TestDatabaseFlags < SQLite3::TestCase
def setup
File.unlink 'test-flags.db' if File.exist?('test-flags.db')
@db = SQLite3::Database.new('test-flags.db')
@db.execute("CREATE TABLE foos (id integer)")
@db.close
end
def teardown
@db.close unless @db.closed?
File.unlink 'test-flags.db' if File.exist?('test-flags.db')
end
def test_open_database_flags_constants
defined_to_date = [:READONLY, :READWRITE, :CREATE, :DELETEONCLOSE,
:EXCLUSIVE, :MAIN_DB, :TEMP_DB, :TRANSIENT_DB,
:MAIN_JOURNAL, :TEMP_JOURNAL, :SUBJOURNAL,
:MASTER_JOURNAL, :NOMUTEX, :FULLMUTEX]
if SQLite3::SQLITE_VERSION_NUMBER > 3007002
defined_to_date += [:AUTOPROXY, :SHAREDCACHE, :PRIVATECACHE, :WAL]
end
if SQLite3::SQLITE_VERSION_NUMBER > 3007007
defined_to_date += [:URI]
end
if SQLite3::SQLITE_VERSION_NUMBER > 3007013
defined_to_date += [:MEMORY]
end
assert defined_to_date.sort == SQLite3::Constants::Open.constants.sort
end
def test_open_database_flags_conflicts_with_readonly
assert_raise(RuntimeError) do
@db = SQLite3::Database.new('test-flags.db', :flags => 2, :readonly => true)
end
end
def test_open_database_flags_conflicts_with_readwrite
assert_raise(RuntimeError) do
@db = SQLite3::Database.new('test-flags.db', :flags => 2, :readwrite => true)
end
end
def test_open_database_readonly_flags
@db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READONLY)
assert @db.readonly?
end
def test_open_database_readwrite_flags
@db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READWRITE)
assert !@db.readonly?
end
def test_open_database_readonly_flags_cant_open
File.unlink 'test-flags.db'
assert_raise(SQLite3::CantOpenException) do
@db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READONLY)
end
end
def test_open_database_readwrite_flags_cant_open
File.unlink 'test-flags.db'
assert_raise(SQLite3::CantOpenException) do
@db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READWRITE)
end
end
def test_open_database_misuse_flags
assert_raise(SQLite3::MisuseException) do
flags = SQLite3::Constants::Open::READONLY | SQLite3::Constants::Open::READWRITE # <== incompatible flags
@db = SQLite3::Database.new('test-flags.db', :flags => flags)
end
end
def test_open_database_create_flags
File.unlink 'test-flags.db'
flags = SQLite3::Constants::Open::READWRITE | SQLite3::Constants::Open::CREATE
@db = SQLite3::Database.new('test-flags.db', :flags => flags) do |db|
db.execute("CREATE TABLE foos (id integer)")
db.execute("INSERT INTO foos (id) VALUES (12)")
end
assert File.exist?('test-flags.db')
end
def test_open_database_exotic_flags
flags = SQLite3::Constants::Open::READWRITE | SQLite3::Constants::Open::CREATE
exotic_flags = SQLite3::Constants::Open::NOMUTEX | SQLite3::Constants::Open::TEMP_DB
@db = SQLite3::Database.new('test-flags.db', :flags => flags | exotic_flags)
@db.execute("INSERT INTO foos (id) VALUES (12)")
assert @db.changes == 1
end
end
end