All files / src/abap/types/basic character_type.ts

85.45% Statements 47/55
81.81% Branches 9/11
77.77% Functions 7/9
85.45% Lines 47/55

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 551x 1x 1x 1x 1x 1x 2870x 2870x 1x 1x 2869x 2869x 1x 1x 7x 7x 7x 7x 7x     7x     7x 7x 1x 1x 948x 948x 1x 1x 149x 149x 1x 1x 37x 37x 1x 1x 3179x 3179x 1x 1x 275x 275x 1x 1x     1x 1x     1x
import {AbstractType, AbstractTypeData} from "./_abstract_type";
 
export class CharacterType extends AbstractType {
  private readonly length: number;
 
  public constructor(length: number, extra?: AbstractTypeData) {
    super(extra);
    if (length <= 0) {
      throw new Error("Bad LENGTH, Character");
    }
    this.length = length;
  }
 
  public cloneType(input: {qualifiedName?: string, ddicName?: string, derivedFromConstant?: boolean}) {
    const clone = {...this.getAbstractTypeData()};
    if (input.qualifiedName) {
      clone.qualifiedName = input.qualifiedName;
    }
    if (input.ddicName) {
      clone.ddicName = input.ddicName;
    }
    if (input.derivedFromConstant) {
      clone.derivedFromConstant = input.derivedFromConstant;
    }
    return new CharacterType(this.length, clone);
  }
 
  public getLength() {
    return this.length;
  }
 
  public toText() {
    return "```c LENGTH " + this.getLength() + "```";
  }
 
  public toABAP() {
    return "c LENGTH " + this.getLength();
  }
 
  public isGeneric() {
    return false;
  }
 
  public containsVoid() {
    return false;
  }
 
  public getIdentifier() {
    return undefined;
  }
 
  public toCDS() {
    return "abap.char( " + this.getLength() + " )";
  }
}