All files / output zcl_abapgit_git_delta.clas.testclasses.mjs

98% Statements 98/100
80% Branches 8/10
100% Functions 6/6
98% Lines 98/100

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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 1001x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x     2x 1x 1x 1x 1x
const {zcl_abapgit_git_delta} = await import("./zcl_abapgit_git_delta.clas.mjs");
const {lcl_stream} = await import("./zcl_abapgit_git_delta.clas.locals.mjs");
await import("./zcl_abapgit_git_delta.clas.locals.mjs");
const {cx_root} = await import("./cx_root.clas.mjs");
// zcl_abapgit_git_delta.clas.testclasses.abap
class ltcl_git_delta_test {
  static STATIC_SUPER = undefined;
  static INTERNAL_TYPE = 'CLAS';
  static INTERNAL_NAME = 'CLAS-ZCL_ABAPGIT_GIT_DELTA-LTCL_GIT_DELTA_TEST';
  static IMPLEMENTED_INTERFACES = [];
  static ATTRIBUTES = {};
  static METHODS = {"TEST_DECODE_DELTAS_EMPTY": {"visibility": "I", "parameters": {}},
  "TEST_DECODE_DELTAS_NO_DELTA": {"visibility": "I", "parameters": {}},
  "TEST_DECODE_DELTAS_SUCCESS": {"visibility": "I", "parameters": {}}};
  constructor() {
    this.me = new abap.types.ABAPObject();
    this.me.set(this);
    this.INTERNAL_ID = abap.internalIdCounter++;
    this.FRIENDS_ACCESS_INSTANCE = {
      "test_decode_deltas_empty": this.#test_decode_deltas_empty.bind(this),
      "test_decode_deltas_no_delta": this.#test_decode_deltas_no_delta.bind(this),
      "test_decode_deltas_success": this.#test_decode_deltas_success.bind(this),
    };
  }
  async constructor_(INPUT) {
    if (super.constructor_) { await super.constructor_(INPUT); }
    return this;
  }
  async #test_decode_deltas_empty() {
    let lt_objects = abap.types.TableFactory.construct(new abap.types.Structure({
    "sha1": new abap.types.Character(40, {"qualifiedName":"zif_abapgit_git_definitions=>ty_sha1"}),
    "type": new abap.types.Character(6, {"qualifiedName":"zif_abapgit_git_definitions=>ty_type"}),
    "data": new abap.types.XString({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-DATA"}),
    "adler32": new abap.types.Hex({length: 4}),
    "index": new abap.types.Integer({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-INDEX"})}, "zif_abapgit_definitions=>ty_object", undefined, {}, {}), {"withHeader":false,"keyType":"DEFAULT","primaryKey":{"name":"primary_key","type":"STANDARD","isUnique":false,"keyFields":[]},"secondary":[{"name":"sha","type":"SORTED","isUnique":false,"keyFields":["SHA1"]},{"name":"type","type":"SORTED","isUnique":false,"keyFields":["TYPE","SHA1"]}]}, "zif_abapgit_definitions=>ty_objects_tt");
    await abap.Classes['ZCL_ABAPGIT_GIT_DELTA'].decode_deltas({iv_show_progress: abap.builtin.abap_false, ct_objects: lt_objects});
    await abap.Classes['CL_ABAP_UNIT_ASSERT'].assert_equals({act: abap.builtin.lines({val: lt_objects}), exp: abap.IntegerFactory.get(0), msg: abap.CharacterFactory.get(38, 'Empty object table should remain empty')});
  }
  async #test_decode_deltas_no_delta() {
    let lt_objects = abap.types.TableFactory.construct(new abap.types.Structure({
    "sha1": new abap.types.Character(40, {"qualifiedName":"zif_abapgit_git_definitions=>ty_sha1"}),
    "type": new abap.types.Character(6, {"qualifiedName":"zif_abapgit_git_definitions=>ty_type"}),
    "data": new abap.types.XString({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-DATA"}),
    "adler32": new abap.types.Hex({length: 4}),
    "index": new abap.types.Integer({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-INDEX"})}, "zif_abapgit_definitions=>ty_object", undefined, {}, {}), {"withHeader":false,"keyType":"DEFAULT","primaryKey":{"name":"primary_key","type":"STANDARD","isUnique":false,"keyFields":[]},"secondary":[{"name":"sha","type":"SORTED","isUnique":false,"keyFields":["SHA1"]},{"name":"type","type":"SORTED","isUnique":false,"keyFields":["TYPE","SHA1"]}]}, "zif_abapgit_definitions=>ty_objects_tt");
    let ls_object = new abap.types.Structure({
    "sha1": new abap.types.Character(40, {"qualifiedName":"zif_abapgit_git_definitions=>ty_sha1"}),
    "type": new abap.types.Character(6, {"qualifiedName":"zif_abapgit_git_definitions=>ty_type"}),
    "data": new abap.types.XString({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-DATA"}),
    "adler32": new abap.types.Hex({length: 4}),
    "index": new abap.types.Integer({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-INDEX"})}, "zif_abapgit_definitions=>ty_object", undefined, {}, {});
    ls_object.get().sha1.set(abap.CharacterFactory.get(40, '1234567890123456789012345678901234567890'));
    ls_object.get().type.set(abap.Classes['ZIF_ABAPGIT_GIT_DEFINITIONS'].zif_abapgit_git_definitions$c_type.get().blob);
    ls_object.get().data.set((await abap.Classes['ZCL_ABAPGIT_CONVERT'].string_to_xstring_utf8({iv_string: new abap.types.String().set(`Hello World`)})));
    ls_object.get().index.set(abap.IntegerFactory.get(1));
    abap.statements.append({source: ls_object, target: lt_objects});
    await abap.Classes['ZCL_ABAPGIT_GIT_DELTA'].decode_deltas({iv_show_progress: abap.builtin.abap_false, ct_objects: lt_objects});
    await abap.Classes['CL_ABAP_UNIT_ASSERT'].assert_equals({act: abap.builtin.lines({val: lt_objects}), exp: abap.IntegerFactory.get(1), msg: abap.CharacterFactory.get(41, 'Non-delta objects should remain unchanged')});
    abap.statements.readTable(lt_objects,{index: abap.IntegerFactory.get(1),
      into: ls_object});
    await abap.Classes['CL_ABAP_UNIT_ASSERT'].assert_equals({act: ls_object.get().type, exp: abap.Classes['ZIF_ABAPGIT_GIT_DEFINITIONS'].zif_abapgit_git_definitions$c_type.get().blob, msg: abap.CharacterFactory.get(30, 'Object type should remain blob')});
  }
  async #test_decode_deltas_success() {
    let lt_objects = abap.types.TableFactory.construct(new abap.types.Structure({
    "sha1": new abap.types.Character(40, {"qualifiedName":"zif_abapgit_git_definitions=>ty_sha1"}),
    "type": new abap.types.Character(6, {"qualifiedName":"zif_abapgit_git_definitions=>ty_type"}),
    "data": new abap.types.XString({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-DATA"}),
    "adler32": new abap.types.Hex({length: 4}),
    "index": new abap.types.Integer({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-INDEX"})}, "zif_abapgit_definitions=>ty_object", undefined, {}, {}), {"withHeader":false,"keyType":"DEFAULT","primaryKey":{"name":"primary_key","type":"STANDARD","isUnique":false,"keyFields":[]},"secondary":[{"name":"sha","type":"SORTED","isUnique":false,"keyFields":["SHA1"]},{"name":"type","type":"SORTED","isUnique":false,"keyFields":["TYPE","SHA1"]}]}, "zif_abapgit_definitions=>ty_objects_tt");
    let lv_original_count = new abap.types.Integer({qualifiedName: "I"});
    let ls_object = new abap.types.Structure({
    "sha1": new abap.types.Character(40, {"qualifiedName":"zif_abapgit_git_definitions=>ty_sha1"}),
    "type": new abap.types.Character(6, {"qualifiedName":"zif_abapgit_git_definitions=>ty_type"}),
    "data": new abap.types.XString({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-DATA"}),
    "adler32": new abap.types.Hex({length: 4}),
    "index": new abap.types.Integer({qualifiedName: "ZIF_ABAPGIT_DEFINITIONS=>TY_OBJECT-INDEX"})}, "zif_abapgit_definitions=>ty_object", undefined, {}, {});
    ls_object.get().sha1.set(abap.CharacterFactory.get(40, '1234567890123456789012345678901234567890'));
    ls_object.get().type.set(abap.Classes['ZIF_ABAPGIT_GIT_DEFINITIONS'].zif_abapgit_git_definitions$c_type.get().blob);
    ls_object.get().data.set((await abap.Classes['ZCL_ABAPGIT_CONVERT'].string_to_xstring_utf8({iv_string: new abap.types.String().set(`Hello World`)})));
    ls_object.get().index.set(abap.IntegerFactory.get(1));
    abap.statements.append({source: ls_object, target: lt_objects});
    ls_object.clear();
    ls_object.get().sha1.set(abap.CharacterFactory.get(40, '1234567890123456789012345678901234567890'));
    ls_object.get().type.set(abap.Classes['ZIF_ABAPGIT_GIT_DEFINITIONS'].zif_abapgit_git_definitions$c_type.get().ref_d);
    ls_object.get().data.set(abap.CharacterFactory.get(8, '0B0D900B'));
    ls_object.get().index.set(abap.IntegerFactory.get(2));
    abap.statements.append({source: ls_object, target: lt_objects});
    lv_original_count.set(abap.builtin.lines({val: lt_objects}));
    await abap.Classes['ZCL_ABAPGIT_GIT_DELTA'].decode_deltas({iv_show_progress: abap.builtin.abap_false, ct_objects: lt_objects});
    await abap.Classes['CL_ABAP_UNIT_ASSERT'].assert_equals({act: abap.builtin.lines({val: lt_objects}), exp: lv_original_count, msg: abap.CharacterFactory.get(57, 'Should have same number of objects after delta processing')});
    for await (const unique400 of abap.statements.loop(lt_objects)) {
      ls_object.set(unique400);
      if (abap.compare.eq(ls_object.get().type, abap.Classes['ZIF_ABAPGIT_GIT_DEFINITIONS'].zif_abapgit_git_definitions$c_type.get().ref_d)) {
        await abap.Classes['CL_ABAP_UNIT_ASSERT'].fail({msg: abap.CharacterFactory.get(47, 'No delta objects should remain after processing')});
      }
    }
  }
}
abap.Classes['CLAS-ZCL_ABAPGIT_GIT_DELTA-LTCL_GIT_DELTA_TEST'] = ltcl_git_delta_test;
export {ltcl_git_delta_test};