|
|
|
|
|
|
|
|
package com.healthmarketscience.jackcess.impl; |
|
|
package com.healthmarketscience.jackcess.impl; |
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
import java.io.File; |
|
|
import java.io.IOException; |
|
|
|
|
|
import java.nio.channels.FileChannel; |
|
|
import java.nio.channels.FileChannel; |
|
|
|
|
|
import java.nio.channels.NonWritableChannelException; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.EnumSet; |
|
|
import java.util.EnumSet; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
import com.healthmarketscience.jackcess.Database; |
|
|
import com.healthmarketscience.jackcess.Database; |
|
|
import static com.healthmarketscience.jackcess.Database.*; |
|
|
import static com.healthmarketscience.jackcess.Database.*; |
|
|
import com.healthmarketscience.jackcess.DatabaseBuilder; |
|
|
import com.healthmarketscience.jackcess.DatabaseBuilder; |
|
|
|
|
|
import com.healthmarketscience.jackcess.PropertyMap; |
|
|
import junit.framework.TestCase; |
|
|
import junit.framework.TestCase; |
|
|
import static com.healthmarketscience.jackcess.TestUtil.*; |
|
|
import static com.healthmarketscience.jackcess.TestUtil.*; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (final TestDB testDB : SUPPORTED_DBS_TEST_FOR_READ) { |
|
|
for (final TestDB testDB : SUPPORTED_DBS_TEST_FOR_READ) { |
|
|
|
|
|
|
|
|
Database db = null; |
|
|
Database db = null; |
|
|
IOException failure = null; |
|
|
|
|
|
|
|
|
Exception failure = null; |
|
|
try { |
|
|
try { |
|
|
db = openCopy(testDB); |
|
|
db = openCopy(testDB); |
|
|
} catch(IOException e) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(testDB.getExpectedFormat().READ_ONLY) { |
|
|
|
|
|
PropertyMap props = db.getUserDefinedProperties(); |
|
|
|
|
|
props.put("foo", "bar"); |
|
|
|
|
|
props.save(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} catch(Exception e) { |
|
|
failure = e; |
|
|
failure = e; |
|
|
} finally { |
|
|
} finally { |
|
|
if(db != null) { |
|
|
if(db != null) { |
|
|
|
|
|
|
|
|
if(!testDB.getExpectedFormat().READ_ONLY) { |
|
|
if(!testDB.getExpectedFormat().READ_ONLY) { |
|
|
assertNull(failure); |
|
|
assertNull(failure); |
|
|
} else { |
|
|
} else { |
|
|
assertTrue(failure.getMessage().contains("does not support writing")); |
|
|
|
|
|
|
|
|
assertTrue(failure instanceof NonWritableChannelException); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |