bugfix varint of 0

This commit is contained in:
Sander Hautvast 2022-10-30 15:21:58 +01:00
parent 75020726dc
commit 5acc000a11
3 changed files with 16 additions and 4 deletions

View file

@ -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);

View 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]);
}
}

View file

@ -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));
}
}