All files / src/msgpack size.ts

100% Statements 20/20
100% Branches 10/10
100% Functions 2/2
100% Lines 20/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3719x     19x           23x 11x 12x 3x 3x   9x 9x       19x   207471x 207468x 3x 1x 1x 2x 1x 1x   1x 1x        
import { uint16, uint32, uint8 } from "..";
import { Context, Serdes } from "../types";
 
export function packSize(
  ctx: Context,
  size: number,
  a: number,
  b: number
) {
  if (size < 16) {
    uint8.ser(ctx, a + size);
  } else if (size < 65536) {
    uint8.ser(ctx, b);
    uint16.ser(ctx, size);
  } else {
    uint8.ser(ctx, b + 1);
    uint32.ser(ctx, size);
  }
}
 
export const strSize: Serdes<number> = {
  ser(ctx, size) {
    if (size < 32) {
      uint8.ser(ctx, 0xa0 + size);
    } else if (size < 256) {
      uint8.ser(ctx, 0xd9);
      uint8.ser(ctx, size);
    } else if (size < 65536) {
      uint8.ser(ctx, 0xda);
      uint16.ser(ctx, size);
    } else {
      uint8.ser(ctx, 0xdb);
      uint32.ser(ctx, size);
    }
  }
} as Serdes<number>;