v1
9/27/2021 by bvaughn -00
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
const strings = [
  "🟩 Container",
  "Lorem ipsum dolor sit amet",
  "consectetur adipiscing elit",
  "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua",
  "Ut enim ad minim veniam",
  "quis nostrud 💜exercitation ullamco"
];
delete caserun single casemove downdrag and drop case


ready



function utfDecodeString(array) {
  let string = '';
  for (let i = 0; i < array.length; i++) {
    const char = array[i];
    string += String.fromCodePoint(char);
  }
  return string;
}

function utfEncodeString(string) {
  const encoded = new Array(string.length);
  for (let i = 0; i < string.length; i++) {
    encoded[i] = string.codePointAt(i);
  }
  return encoded;
}

for (let i = 0; i < strings.length; i++) {
  const string = strings[i];
  const encoded = utfEncodeString(string);
  const decoded = utfDecodeString(encoded);
}
delete caserun single casemove upmove downdrag and drop case


ready



function utfDecodeString(array) {
  return new TextDecoder().decode(new Uint8Array(array));
}

function utfEncodeString(string) {
  return new TextEncoder().encode(string);
}

for (let i = 0; i < strings.length; i++) {
  const string = strings[i];
  const encoded = utfEncodeString(string);
  const decoded = utfDecodeString(encoded);
}
delete caserun single casemove updrag and drop case


ready



const flag = Number.MIN_VALUE;
const regexp = /[\uD800-\uDFFF]/;

function utfDecodeString(array) {
  if (array[0] === flag) {
    return new TextDecoder().decode(new Uint8Array(array.slice(1)));
  } else {
    let string = '';
    for (let i = 0; i < array.length; i++) {
      const char = array[i];
      string += String.fromCodePoint(char);
    }
    return string;
  }
}

function utfEncodeString(string) {
  if (regexp.test(string)) {
    return [flag].concat(...new TextEncoder().encode(string));
  } else {
    const encoded = new Array(string.length);
    for (let i = 0; i < string.length; i++) {
      encoded[i] = string.codePointAt(i);
    }
    return encoded;
  }
}

for (let i = 0; i < strings.length; i++) {
  const string = strings[i];
  const encoded = utfEncodeString(string);
  const decoded = utfDecodeString(encoded);
}
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN