| 157 | } |
| 158 | |
| 159 | fn put_branch( |
| 160 | txn: &mut impl crate::pristine::MutTxnT, |
| 161 | trunk_id: TrunkId, |
| 162 | b: BranchId, |
| 163 | after: Option<BranchId>, |
| 164 | ) { |
| 165 | let trunk_key = encode_trunk_id(&trunk_id); |
| 166 | let bkey = encode_branch_id(&b); |
| 167 | let serialized = SerializedBranch { |
| 168 | trunk_id, |
| 169 | state: BranchState::Alive, |
| 170 | line_hash: 0, |
| 171 | }; |
| 172 | txn.put_crdt_branch(&bkey, &encode_branch_value(&serialized)) |
| 173 | .unwrap(); |
| 174 | txn.put_crdt_trunk_branch(&trunk_key, &bkey).unwrap(); |
| 175 | let after_key = match after { |
| 176 | Some(a) => encode_branch_id(&a), |
| 177 | None => [0u8; 12], |
| 178 | }; |
| 179 | txn.put_crdt_branch_after(&bkey, &after_key).unwrap(); |
| 180 | } |
| 181 | |
| 182 | #[test] |
| 183 | fn linear_chain_preserves_insertion_order() { |