bugfix varint of 0
This commit is contained in:
parent
75020726dc
commit
5acc000a11
3 changed files with 16 additions and 4 deletions
|
|
@ -20,10 +20,11 @@ mod tests {
|
|||
fn test_build() -> Result<(), Error> {
|
||||
let mut builder = DatabaseBuilder::new();
|
||||
builder.schema("foo", "create table foo(bar varchar(10))");
|
||||
let mut record = Record::new(1);
|
||||
record.add_value(values::string("helloworld"));
|
||||
builder.add_record(record);
|
||||
|
||||
for i in 0..100 {
|
||||
let mut record = Record::new(i);
|
||||
record.add_value(values::string("helloworld"));
|
||||
builder.add_record(record);
|
||||
}
|
||||
let database: Database = builder.into();
|
||||
let file = File::create("foo.db")?;
|
||||
let writer = BufWriter::new(file);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ pub struct Record {
|
|||
}
|
||||
|
||||
impl Record {
|
||||
/// Users have to supply the rowid. In the java version this can be done automatically
|
||||
pub fn new(rowid: u64) -> Self {
|
||||
Self {
|
||||
rowid,
|
||||
|
|
@ -78,5 +79,7 @@ mod tests {
|
|||
fn test() {
|
||||
let mut record = Record::new(1);
|
||||
record.add_value(string("hello"));
|
||||
let bytes: Vec<u8> = record.into();
|
||||
assert_eq!(bytes, vec![7, 1, 2, 23, 104, 101, 108, 108, 111]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@ pub fn write(value: u64) -> Vec<u8> {
|
|||
}
|
||||
result
|
||||
} else {
|
||||
if v == 0 {
|
||||
return vec![0];
|
||||
}
|
||||
let mut result = Vec::new();
|
||||
while v != 0 {
|
||||
result.push(((v & 0x7f) | 0x80) as u8);
|
||||
|
|
@ -39,4 +42,9 @@ mod tests {
|
|||
fn test_write1() {
|
||||
assert_eq!(vec![1], write(0x01));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write0() {
|
||||
assert_eq!(vec![0], write(0));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue