TiagoMSSantos/MobileRT

View on GitHub
docs/jscpd-report/jscpd-report.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>jscpd, Copy/Paste Detector</title><link rel="stylesheet" href="https://unpkg.com/purecss@1.0.0/build/pure-min.css" integrity="sha384-nn4HPE8lTHyVtfCBi5yW9d20FjT8BJwUXyWZT9InLYax14RDjBj46LmSztkmNP9w" crossorigin="anonymous"><script>function collapseExpandAll() {
    document.querySelectorAll('.clone').forEach(function (cloneElement) {
        cloneElement.classList.remove('expanded');
    });
    document.querySelector('.clones').classList.toggle('collapsed');
}

function expandCollapse(event) {
    if (event.target.classList.contains('expand') || event.target.classList.contains('collapse')) {
        this.classList.toggle('expanded');
    }

}

window.onload = function () {

    var codes = document.querySelectorAll('pre');


    codes.forEach(function (code) {
        code.innerHTML = '<span class="line-number"></span>' + code.innerHTML + '<span class="cl"></span>';

        var length = parseInt(code.getAttribute('data-length'));
        var firstStart = parseInt(code.getAttribute('data-first-start'));
        var secondStart = parseInt(code.getAttribute('data-second-start'));

        for (var j = 0; j <= length; j++) {
            var line_num = code.getElementsByTagName('span')[0];
            line_num.innerHTML += '<span>' + (firstStart + j) + ' ' + (secondStart + j) + '</span>';
        }

    });

    document.querySelectorAll('.clone').forEach(function (cloneElement) {
        cloneElement.addEventListener('click', expandCollapse)
    });
}
</script><style>* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

a {
    text-decoration: none;
    color: rgb(61, 146, 201);
}

a:hover,
a:focus {
    text-decoration: underline;
}

h3 {
    font-weight: 100;
}

#layout {
    padding: 0;
}

.header {
    text-align: center;
    top: auto;
    margin: 3em auto;
}

.sidebar {
    background: rgb(61, 79, 93);
    color: #fff;
}

.nav-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.nav-item {
    display: inline-block;
    *display: inline;
    zoom: 1;
}

.nav-item a {
    background: transparent;
    border: 2px solid rgb(176, 202, 219);
    color: #fff;
    margin-top: 1em;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    font-size: 85%;
}

.nav-item a:hover,
.nav-item a:focus {
    border: 2px solid rgb(61, 146, 201);
    text-decoration: none;
}

.content-subhead {
    text-transform: uppercase;
    color: #aaa;
    border-bottom: 1px solid #eee;
    padding: 0.4em 0;
    font-size: 120%;
    font-weight: 500;
    letter-spacing: 0.1em;
}

.content {
    padding: 2em 1em 0;
}

.clone {
    padding-bottom: 2em;

}

.clone header button {
    float: left;
    font-size: 110%;
    margin: 0.1em 0.3em;
}

.clone .expand {
    display: none;
}

.clone .collapse {
    display: block;
}

.collapsed .clone pre {
    display: none;
}

.collapsed .clone .expand {
    display: block;
}

.collapsed .clone .collapse {
    display: none;
}

.clone.expanded .expand {
    display: none !important;
}

.clone.expanded .collapse {
    display: block !important;
}

.clone.expanded pre {
    display: block !important;
}

.clone pre {
    max-width: 800px;
}

.clone pre .line-number {
    font: normal normal 12px/14px "Courier New", Courier, Monospace;
    display: block;
    float: left;
    margin: 0 1em 0 -1em;
    border-right: 0.1em solid #444;
    text-align: right;
}

.clone pre .line-number span {
    display: block;
    padding: 0 .5em 0 1em;

}

.clone pre .cl {
    display: block;
    clear: both;
}

.clone-title {
    font-size: 1.1em;
    color: #222;
    margin-bottom: 0.2em;
}

.clone-description {
    font-family: Georgia, "Cambria", serif;
    color: #444;
    line-height: 1.1em;
    font-size: 80%;
}

.controls {
    text-align: right;
}

.controls button {
    font-size: 70%;
}

.mode-stats {
    color: #999;
    font-size: 90%;
    margin: 0;
}

.mode-rate {
    margin: 0 0.1em;
    padding: 0.3em 1em;
    color: #fff;
    background: #999;
    font-size: 80%;
}

.stats {
    width: 100%;
    margin: 1em 0;
}

.clones-excellent {
    background: #5aba59;
}

.clones-fine {
    background: #4d85d1;
}

.clones-danger {
    background: #df2d4f;
}

.footer {
    padding: 1em 0;
    color: #999;
    font-size: 70%;
}

@media (min-width: 48em) {
    .content {
        padding: 2em 3em 0;
        margin-left: 25%;
    }

    .header {
        text-align: right;
    }

    .sidebar {
        position: fixed;
        top: 0;
        width: 25%;
        bottom: 0;
        padding: 1em;
    }

    .footer {
        text-align: center;

    }
}</style></head><body><div class="pure-g" id="layout"><div class="sidebar pure-u-1 pure-u-md-1-4"><div class="header"><img src="https://raw.githubusercontent.com/kucherenko/jscpd/1.0.0-alpha/assets/logo-small-box.svg?sanitize=true" width="190"><nav class="nav"><ul class="nav-list"><li class="nav-item"><a class="pure-button" href="#yaml">yaml</a></li><li class="nav-item"><a class="pure-button" href="#properties">properties</a></li><li class="nav-item"><a class="pure-button" href="#markdown">markdown</a></li><li class="nav-item"><a class="pure-button" href="#css">css</a></li><li class="nav-item"><a class="pure-button" href="#bash">bash</a></li><li class="nav-item"><a class="pure-button" href="#variable">variable</a></li><li class="nav-item"><a class="pure-button" href="#cpp">cpp</a></li><li class="nav-item"><a class="pure-button" href="#c">c</a></li><li class="nav-item"><a class="pure-button" href="#java">java</a></li><li class="nav-item"><a class="pure-button" href="#kotlin">kotlin</a></li></ul></nav></div></div><div class="content pure-u-1 pure-u-md-3-4"><div class="controls"><div class="pure-u"><button class="pure-button" onclick="collapseExpandAll()">Collapse/Expand All</button></div></div><table class="pure-table stats"><thead><tr><th>Total files</th><th>Total lines of code</th><th>Duplicated lines</th><th>% of duplications</th></tr></thead><tbody><tr><td>227</td><td>22185</td><td>941</td><td>4.24%</td></tr></tbody></table><div class="clones collapsed"><a name="yaml"></a><h1 class="content-subhead">yaml</h1><div class="mode-stats"><p><span class="mode-rate">7.69%</span> Total files: 12, total lines of code: 1469, duplicated lines: 113</p></div><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">.github/workflows/code-analysis.yml[24:1 - 46:75]<br/>.github/workflows/android_repeatable.yml[10:1 - 32:16]</div></header><div class="clone-description"><pre data-first-start="24" data-second-start="10" data-length="22">defaults:
  run:
    shell: sh
    working-directory: .

concurrency:
  group: ${{ github.workflow }} ${{ github.ref }}
  cancel-in-progress: true

# Default environment variables.
env:
  GITHUB_STEP_TIMEOUT_SMALL: 4
  GITHUB_STEP_TIMEOUT_MEDIUM: 10
  GITHUB_STEP_TIMEOUT_LONG: 30

jobs:
  Build:
    if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'

    strategy:
      fail-fast: false
      matrix:
        # Override automatic language detection by changing the below list</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">.github/workflows/code-analysis.yml[69:5 - 89:18]<br/>.github/workflows/android_repeatable.yml[48:5 - 68:18]</div></header><div class="clone-description"><pre data-first-start="69" data-second-start="48" data-length="20">- name: Set up JDK
      timeout-minutes: ${{ fromJSON(env.GITHUB_STEP_TIMEOUT_MEDIUM) }}
      if: success()
      uses: actions/setup-java@v3
      with:
        # Check available parameters in: https://github.com/actions/setup-java/blob/main/action.yml
        java-version: 17
        distribution: zulu
        java-package: jdk
        architecture: x64
        check-latest: false
        server-id: github
        server-username: GITHUB_ACTOR
        server-password: GITHUB_TOKEN
        settings-path: ~/.gradle
        overwrite-settings: true
        gpg-private-key: ''
        gpg-passphrase: GPG_PASSPHRASE
        cache: gradle

    - name: Check</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">.github/workflows/native.yml[40:1 - 59:12]<br/>.github/workflows/android_repeatable.yml[10:1 - 29:13]</div></header><div class="clone-description"><pre data-first-start="40" data-second-start="10" data-length="19">defaults:
  run:
    shell: sh
    working-directory: .

concurrency:
  group: ${{ github.workflow }} ${{ github.ref }}
  cancel-in-progress: true

# Default environment variables.
env:
  GITHUB_STEP_TIMEOUT_SMALL: 4
  GITHUB_STEP_TIMEOUT_MEDIUM: 10
  GITHUB_STEP_TIMEOUT_LONG: 30

jobs:
  Build:
    if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'

    outputs</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">.github/workflows/native.yml[241:7 - 252:6]<br/>.github/workflows/native.yml[208:7 - 220:8]</div></header><div class="clone-description"><pre data-first-start="241" data-second-start="208" data-length="11">uses: actions/cache@v3
      with:
        # Check available parameters in: https://github.com/actions/cache/blob/main/action.yml
        key: reports_${{ github.sha }}_${{ github.run_id }}_${{ matrix.type }}_${{ matrix.os }}
        restore-keys: reports_${{ github.sha }}_${{ github.run_id }}_${{ matrix.type }}_${{ matrix.os }}
        path: |
          app/build/reports/coverage/androidTest/debug/connected
          code_coverage_base.info
          code_coverage.info
          code_coverage_test.info

    -</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">.github/workflows/windows.yml[115:5 - 141:21]<br/>.github/workflows/android_repeatable.yml[42:5 - 68:18]</div></header><div class="clone-description"><pre data-first-start="115" data-second-start="42" data-length="26">steps:
    - name: Checkout
      timeout-minutes: ${{ fromJSON(env.GITHUB_STEP_TIMEOUT_MEDIUM) }}
      if: success()
      uses: actions/checkout@v3

    - name: Set up JDK
      timeout-minutes: ${{ fromJSON(env.GITHUB_STEP_TIMEOUT_MEDIUM) }}
      if: success()
      uses: actions/setup-java@v3
      with:
        # Check available parameters in: https://github.com/actions/setup-java/blob/main/action.yml
        java-version: 17
        distribution: zulu
        java-package: jdk
        architecture: x64
        check-latest: false
        server-id: github
        server-username: GITHUB_ACTOR
        server-password: GITHUB_TOKEN
        settings-path: ~/.gradle
        overwrite-settings: true
        gpg-private-key: ''
        gpg-passphrase: GPG_PASSPHRASE
        cache: gradle

    - name: Download</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">.github/workflows/windows.yml[220:9 - 235:24]<br/>.github/workflows/native.yml[140:9 - 154:23]</div></header><div class="clone-description"><pre data-first-start="220" data-second-start="140" data-length="15">dir: '${{ github.workspace }}'
        install-deps: 'true'
        modules: ''
        cache: 'true'
        cache-key-prefix: '${{ runner.os }}'
        setup-python: 'false'
        set-env: 'true'
        tools-only: 'false'
        aqtversion: '==2.1.*'
        py7zrversion: '==0.19.*'
        extra: '--external 7z'

    - name: Check Qt path installation.
      timeout-minutes: ${{ fromJSON(env.GITHUB_STEP_TIMEOUT_SMALL) }}
      if: success()
      working-directory</pre></div></section><a name="properties"></a><h1 class="content-subhead">properties</h1><div class="mode-stats"><p><span class="mode-rate">0%</span> Total files: 3, total lines of code: 118, duplicated lines: 0</p></div><a name="markdown"></a><h1 class="content-subhead">markdown</h1><div class="mode-stats"><p><span class="mode-rate">0%</span> Total files: 5, total lines of code: 608, duplicated lines: 0</p></div><a name="css"></a><h1 class="content-subhead">css</h1><div class="mode-stats"><p><span class="mode-rate">0%</span> Total files: 1, total lines of code: 1, duplicated lines: 0</p></div><a name="bash"></a><h1 class="content-subhead">bash</h1><div class="mode-stats"><p><span class="mode-rate">9.68%</span> Total files: 10, total lines of code: 2592, duplicated lines: 251</p></div><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/compile_android.sh[8:1 - 50:15]<br/>scripts/check_android.sh[7:1 - 49:27]</div></header><div class="clone-description"><pre data-first-start="8" data-second-start="7" data-length="42">###############################################################################
###############################################################################


###############################################################################
# Exit immediately if a command exits with a non-zero status.
###############################################################################
set -eu;
###############################################################################
###############################################################################


###############################################################################
# Change directory to MobileRT root.
###############################################################################
cd &quot;$(dirname &quot;${0}&quot;)/..&quot; || exit;
###############################################################################
###############################################################################


###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################


###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck &gt; /dev/null; then
  shellcheck &quot;${0}&quot; || exit
fi
###############################################################################
###############################################################################


###############################################################################
# Set default arguments.
###############################################################################
type='release'</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/compile_native.sh[12:1 - 55:15]<br/>scripts/check_android.sh[7:1 - 51:15]</div></header><div class="clone-description"><pre data-first-start="12" data-second-start="7" data-length="43">###############################################################################
###############################################################################


###############################################################################
# Exit immediately if a command exits with a non-zero status.
###############################################################################
set -eu;
###############################################################################
###############################################################################


###############################################################################
# Change directory to MobileRT root.
###############################################################################
cd &quot;$(dirname &quot;${0}&quot;)/..&quot; || exit;
###############################################################################
###############################################################################


###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################


###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck &gt; /dev/null; then
  shellcheck &quot;${0}&quot; || exit
fi
###############################################################################
###############################################################################


###############################################################################
# Set default arguments.
###############################################################################
type='release';
compiler='g++'</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/install_dependencies.sh[20:1 - 60:24]<br/>scripts/check_android.sh[7:1 - 47:25]</div></header><div class="clone-description"><pre data-first-start="20" data-second-start="7" data-length="40">###############################################################################
###############################################################################


###############################################################################
# Exit immediately if a command exits with a non-zero status.
###############################################################################
set -eu;
###############################################################################
###############################################################################


###############################################################################
# Change directory to MobileRT root.
###############################################################################
cd &quot;$(dirname &quot;${0}&quot;)/..&quot; || exit;
###############################################################################
###############################################################################


###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################


###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck &gt; /dev/null; then
  shellcheck &quot;${0}&quot; || exit
fi
###############################################################################
###############################################################################


###############################################################################
# Install dependencies.</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/run_tests.sh[7:1 - 50:27]<br/>scripts/check_android.sh[7:1 - 51:15]</div></header><div class="clone-description"><pre data-first-start="7" data-second-start="7" data-length="43">###############################################################################
###############################################################################


###############################################################################
# Exit immediately if a command exits with a non-zero status.
###############################################################################
set -eu;
###############################################################################
###############################################################################


###############################################################################
# Change directory to MobileRT root.
###############################################################################
cd &quot;$(dirname &quot;${0}&quot;)/..&quot; || exit;
###############################################################################
###############################################################################


###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################


###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck &gt; /dev/null; then
  shellcheck &quot;${0}&quot; || exit
fi
###############################################################################
###############################################################################


###############################################################################
# Set default arguments.
###############################################################################
type='release';
ndk_version='23.2.8568313'</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/plot/plot.sh[34:1 - 47:16]<br/>scripts/profile.sh[47:1 - 60:7]</div></header><div class="clone-description"><pre data-first-start="34" data-second-start="47" data-length="13">setPaths() {
  PATH_TO_SEARCH='./';
  FILE_TO_SEARCH='MobileRT.jks';

  FIND_MOBILERT=$(find ${PATH_TO_SEARCH} -iname &quot;${FILE_TO_SEARCH}&quot; 2&gt; /dev/null | head -n 1 || true);
  MOBILERT_PATH=$(echo &quot;${FIND_MOBILERT}&quot; | sed 's/\/app\/.*//g' || true);

  if [ -z &quot;${MOBILERT_PATH}&quot; ]; then
    PATH_TO_SEARCH='/';
    FIND_MOBILERT=$(find ${PATH_TO_SEARCH} -iname &quot;MobileRT&quot; 2&gt; /dev/null | head -n 1);
    MOBILERT_PATH=$(echo &quot;${FIND_MOBILERT}&quot; | sed &quot;s/\/app\/${FILE_TO_SEARCH}/g&quot;);
  fi

  SCRIPTS_PATH=</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/plot/plot.sh[48:43 - 64:17]<br/>scripts/profile.sh[69:45 - 84:80]</div></header><div class="clone-description"><pre data-first-start="48" data-second-start="69" data-length="16">;

  set +u;
  if [ -z &quot;${PLOT_GRAPHS}&quot; ]; then
    PLOT_GRAPHS=${SCRIPTS_PATH}/&quot;graphs&quot;;
  fi
  set -u;

  mkdir -p &quot;${PLOT_GRAPHS}&quot;;
  set +u;
  if [ -z &quot;${PLOT_GRAPHS}&quot; ]; then
    PLOT_GRAPHS=${SCRIPTS_PATH}/&quot;graphs&quot;;
  fi
  set -u;
}

prepareFilenames</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/test/helper_functions.sh[313:68 - 330:50]<br/>scripts/test/helper_functions.sh[245:61 - 262:53]</div></header><div class="clone-description"><pre data-first-start="313" data-second-start="245" data-length="17">;

  _clearEnvVariables;
  # Validate the help message returns the expected value.
  eval '$(${_functionName} -h &gt; /dev/null 2&gt;&amp;1)';
  returnValue=&quot;$?&quot;;
  expected='0';
  assertEqual &quot;${expected}&quot; &quot;${returnValue}&quot; &quot;${_testName} -h&quot;;

  _clearEnvVariables;
  # Validate the help message returns the expected value.
  eval '$(${_functionName} \? &gt; /dev/null 2&gt;&amp;1)';
  returnValue=&quot;$?&quot;;
  expected='0';
  assertEqual &quot;${expected}&quot; &quot;${returnValue}&quot; &quot;${_testName} ?&quot;;
}

# Tests the parseArgumentsToTestAndroid function.</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/test/helper_functions.sh[380:116 - 398:44]<br/>scripts/test/helper_functions.sh[312:112 - 262:53]</div></header><div class="clone-description"><pre data-first-start="380" data-second-start="312" data-length="18">;
  assertEqual &quot;${expected}&quot; &quot;${cpu_architecture}&quot; &quot;${_testName} -f&quot;;

  _clearEnvVariables;
  # Validate the help message returns the expected value.
  eval '$(${_functionName} -h &gt; /dev/null 2&gt;&amp;1)';
  returnValue=&quot;$?&quot;;
  expected='0';
  assertEqual &quot;${expected}&quot; &quot;${returnValue}&quot; &quot;${_testName} -h&quot;;

  _clearEnvVariables;
  # Validate the help message returns the expected value.
  eval '$(${_functionName} \? &gt; /dev/null 2&gt;&amp;1)';
  returnValue=&quot;$?&quot;;
  expected='0';
  assertEqual &quot;${expected}&quot; &quot;${returnValue}&quot; &quot;${_testName} ?&quot;;
}

# Tests the parseArgumentsToCheck function.</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">scripts/test/helper_functions.sh[424:82 - 443:4]<br/>scripts/test/helper_functions.sh[312:112 - 262:53]</div></header><div class="clone-description"><pre data-first-start="424" data-second-start="312" data-length="19">;
  assertEqual &quot;${expected}&quot; &quot;${cpu_architecture}&quot; &quot;${_testName} -f&quot;;

  _clearEnvVariables;
  # Validate the help message returns the expected value.
  eval '$(${_functionName} -h &gt; /dev/null 2&gt;&amp;1)';
  returnValue=&quot;$?&quot;;
  expected='0';
  assertEqual &quot;${expected}&quot; &quot;${returnValue}&quot; &quot;${_testName} -h&quot;;

  _clearEnvVariables;
  # Validate the help message returns the expected value.
  eval '$(${_functionName} \? &gt; /dev/null 2&gt;&amp;1)';
  returnValue=&quot;$?&quot;;
  expected='0';
  assertEqual &quot;${expected}&quot; &quot;${returnValue}&quot; &quot;${_testName} ?&quot;;
}


set</pre></div></section><a name="variable"></a><h1 class="content-subhead">variable</h1><div class="mode-stats"><p><span class="mode-rate">0%</span> Total files: 10, total lines of code: 1741, duplicated lines: 0</p></div><a name="cpp"></a><h1 class="content-subhead">cpp</h1><div class="mode-stats"><p><span class="mode-rate">1.71%</span> Total files: 99, total lines of code: 8119, duplicated lines: 139</p></div><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Scenes/Scenes.cpp[208:43 - 216:29]<br/>app/Scenes/Scenes.cpp[122:44 - 129:22]</div></header><div class="clone-description"><pre data-first-start="208" data-second-start="122" data-length="8">);

    // sphere - mirror
    scene.spheres_.emplace_back(Sphere {
            ::glm::vec3 {0.45F, -0.65F, 0.4F}, 0.35F,
            static_cast&lt;::std::int32_t&gt; (scene.materials_.size())});
    scene.materials_.emplace_back(mirrorMat);

    // sphere - transmission</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestIntersection.cpp[47:54 - 60:4]<br/>app/Unit_Testing/TestIntersection.cpp[30:53 - 43:4]</div></header><div class="clone-description"><pre data-first-start="47" data-second-start="30" data-length="13">}};
    const auto primitive {nullptr};
    const auto materialIndex {0};
    const ::glm::vec2 texCoords {0.4F, 0.6F};
    Ray ray {::glm::vec3 {1.0F}, ::glm::vec3 {}, 0, false};

    ASSERT_DEBUG_DEATH(const Intersection intersection
        (::std::move(ray), intPoint, dist, normal, primitive, materialIndex, texCoords);, &quot;&quot;);
}

/**
 * Tests the Intersection constructor with invalid parameters.
 * In this case the distance is of length 0 and should be a positive value.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestIntersection.cpp[74:73 - 80:10]<br/>app/Unit_Testing/TestIntersection.cpp[30:54 - 36:23]</div></header><div class="clone-description"><pre data-first-start="74" data-second-start="30" data-length="6">};
    const auto primitive {nullptr};
    const auto materialIndex {0};
    const ::glm::vec2 texCoords {0.4F, 0.6F};
    Ray ray {::glm::vec3 {1.0F}, ::glm::vec3 {}, 0, false};

    const</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestPlane.cpp[86:38 - 92:10]<br/>app/Unit_Testing/TestPlane.cpp[69:34 - 76:14]</div></header><div class="clone-description"><pre data-first-start="86" data-second-start="69" data-length="6">) {
    const auto materialIndex {19};
    const ::glm::vec3 point {1, 2, 3};
    const ::glm::vec3 normal {4, 5, 6};
    const auto normal2 {::glm::normalize(normal)};
    const Plane plane2 {point, normal, materialIndex};
    const</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestPlane.cpp[104:38 - 109:10]<br/>app/Unit_Testing/TestPlane.cpp[69:34 - 74:10]</div></header><div class="clone-description"><pre data-first-start="104" data-second-start="69" data-length="5">) {
    const auto materialIndex {19};
    const ::glm::vec3 point {1, 2, 3};
    const ::glm::vec3 normal {4, 5, 6};
    const auto normal2 {::glm::normalize(normal)};
    Plane</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestPlane.cpp[110:43 - 122:4]<br/>app/Unit_Testing/TestPlane.cpp[92:30 - 103:4]</div></header><div class="clone-description"><pre data-first-start="110" data-second-start="92" data-length="12">};

    ASSERT_EQ(materialIndex, plane3.getMaterialIndex());
    for (int i {0}; i &lt; ::MobileRT::NumberOfAxes; ++i) {
        ASSERT_FLOAT_EQ(point[i], plane3.getPoint()[i]);
        ASSERT_FLOAT_EQ(normal2[i], plane3.getNormal()[i]);
    }
}

/**
 * Tests intersecting an AABB with a plane.
 * The AABB in this case should not intersect the plane.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestPlane.cpp[273:41 - 281:19]<br/>app/Unit_Testing/TestPlane.cpp[256:40 - 264:20]</div></header><div class="clone-description"><pre data-first-start="273" data-second-start="256" data-length="8">10.0F, 0.0F, 10.0F}};
    const auto origin {::glm::vec3 {0.0F, 0.0F, 10.0F}};
    const auto depth {19};
    ::MobileRT::Ray ray {direction, origin, depth, false, nullptr};
    ::MobileRT::Intersection intersection {::std::move(ray)};

    const float lastDist {intersection.length_};
    intersection = plane-&gt;intersect(intersection);
    ASSERT_EQ(true</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Unit_Testing/TestRay.cpp[54:23 - 59:19]<br/>app/Unit_Testing/TestRay.cpp[36:32 - 41:18]</div></header><div class="clone-description"><pre data-first-start="54" data-second-start="36" data-length="5">) {
    const auto direction {::glm::vec3 {10.0F, 0.0F, 10.0F}};
    const auto origin {::glm::vec3 {0.0F, 0.0F, 10.0F}};
    const auto depth {19};
    const auto primitive {nullptr};
    const Ray ray1</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Components/Loaders/OBJLoader.cpp[183:51 - 195:26]<br/>app/Components/Loaders/OBJLoader.cpp[162:46 - 174:30]</div></header><div class="clone-description"><pre data-first-start="183" data-second-start="162" data-length="12">{
                            Triangle::Builder(
                                ::std::get&lt;0&gt; (vertices), ::std::get&lt;1&gt; (vertices), ::std::get&lt;2&gt; (vertices)
                            )
                                .withNormals(
                                    ::std::get&lt;0&gt;(normal),
                                    ::std::get&lt;1&gt;(normal),
                                    ::std::get&lt;2&gt;(normal))
                                .withTexCoords(
                                    ::std::get&lt;0&gt;(texCoord),
                                    ::std::get&lt;1&gt;(texCoord),
                                    ::std::get&lt;2&gt;(texCoord))
                        }</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Components/Loaders/OBJLoader.cpp[230:21 - 238:22]<br/>app/Components/Loaders/OBJLoader.cpp[183:25 - 170:30]</div></header><div class="clone-description"><pre data-first-start="230" data-second-start="183" data-length="8">Triangle::Builder builder {
                        Triangle::Builder(
                            ::std::get&lt;0&gt; (vertices), ::std::get&lt;1&gt; (vertices), ::std::get&lt;2&gt; (vertices)
                        )
                            .withNormals(
                                ::std::get&lt;0&gt;(normal),
                                ::std::get&lt;1&gt;(normal),
                                ::std::get&lt;2&gt;(normal))
                    }</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Components/Loaders/OBJLoader.cpp[248:25 - 254:48]<br/>app/Components/Loaders/OBJLoader.cpp[209:29 - 215:23]</div></header><div class="clone-description"><pre data-first-start="248" data-second-start="209" data-length="6">const auto materialIndex {static_cast&lt;::std::int32_t&gt; (scene-&gt;materials_.size())};
                        const auto &amp;triangle {builder.withMaterialIndex(materialIndex).build()};
                        scene-&gt;triangles_.emplace_back(triangle);
                        scene-&gt;materials_.emplace_back(::std::move(material));
                    }
                }
            }// Loop over vertices in the face.</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Components/Loaders/OBJLoader.cpp[311:1 - 317:7]<br/>app/Components/Loaders/OBJLoader.cpp[272:1 - 279:10]</div></header><div class="clone-description"><pre data-first-start="311" data-second-start="272" data-length="6">) const {
    const auto itIdx {shape.mesh.indices.cbegin() + indexOffset};
    const auto idx1 {*(itIdx + 0)};
    const auto idx2 {*(itIdx + 1)};
    const auto idx3 {*(itIdx + 2)};

    if</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Components/Samplers/Stratified.cpp[10:17 - 17:32]<br/>app/Components/Samplers/HaltonSeq.cpp[10:16 - 17:23]</div></header><div class="clone-description"><pre data-first-start="10" data-second-start="10" data-length="7">::getSample(const ::std::uint32_t sample) {
    const auto current {this-&gt;sample_.fetch_add(1, ::std::memory_order_relaxed)};
    if (current &gt;= (this-&gt;domainSize_ * (sample + 1))) {
        this-&gt;sample_.fetch_sub(1, ::std::memory_order_relaxed);
        return 1.0F;
    }
    const auto index {current - (sample * this-&gt;domainSize_)};
    const auto res {static_cast</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/Components/Shaders/Whitted.cpp[13:13 - 20:43]<br/>app/Components/Shaders/PathTracer.cpp[22:16 - 29:43]</div></header><div class="clone-description"><pre data-first-start="13" data-second-start="22" data-length="7">::shade(::glm::vec3 *const rgb, const Intersection &amp;intersection) {
    const auto rayDepth {intersection.ray_.depth_};
    if (rayDepth &gt; RayDepthMax) {
        return false;
    }

    const auto &amp;lE {intersection.material_-&gt;Le_};
    //STOP if it intersects a light source</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/MobileRT/Shapes/Triangle.hpp[76:9 - 87:19]<br/>app/MobileRT/Shapes/Triangle.hpp[17:5 - 29:12]</div></header><div class="clone-description"><pre data-first-start="76" data-second-start="17" data-length="11">private:
            ::glm::vec3 AC_ {};
            ::glm::vec3 AB_ {};
            ::glm::vec3 pointA_ {};
            ::glm::vec3 normalA_ {};
            ::glm::vec3 normalB_ {};
            ::glm::vec3 normalC_ {};
            ::glm::vec2 texCoordA_ {-1};
            ::glm::vec2 texCoordB_ {-1};
            ::glm::vec2 texCoordC_ {-1};
            ::std::int32_t materialIndex_ {-1};
            friend</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/System_dependent/Native/Qt/MobileRT/mainwindow.cpp[78:34 - 85:14]<br/>app/System_dependent/Native/Qt/MobileRT/mainwindow.cpp[53:82 - 60:7]</div></header><div class="clone-description"><pre data-first-start="78" data-second-start="53" data-length="7">);

    const ::std::uint32_t size {static_cast&lt;::std::uint32_t&gt; (m_config.width) * static_cast&lt;::std::uint32_t&gt; (m_config.height)};
    LOG_DEBUG(&quot;width = &quot;, m_config.width);
    LOG_DEBUG(&quot;height = &quot;, m_config.height);
    m_config.bitmap = ::std::vector&lt;::std::int32_t&gt; (size);

    LOG_DEBUG</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/System_dependent/Native/Qt/MobileRT/mainwindow.cpp[87:45 - 99:31]<br/>app/System_dependent/Native/Qt/MobileRT/mainwindow.cpp[60:66 - 72:26]</div></header><div class="clone-description"><pre data-first-start="87" data-second-start="60" data-length="12">);

    RayTrace(m_config, m_async);

    m_timer = new QTimer(this);
    connect(m_timer, SIGNAL(timeout()), this, SLOT(update_image()));
    m_timer-&gt;start(1000);

    this-&gt;resize(m_config.width + 2, m_config.height + 70);
    m_ui-&gt;graphicsView-&gt;resize(m_config.width + 2, m_config.height + 2);
}

void MainWindow::keyPressEvent</pre></div></section><a name="c"></a><h1 class="content-subhead">c</h1><div class="mode-stats"><p><span class="mode-rate">0%</span> Total files: 4, total lines of code: 141, duplicated lines: 0</p></div><a name="java"></a><h1 class="content-subhead">java</h1><div class="mode-stats"><p><span class="mode-rate">6.02%</span> Total files: 82, total lines of code: 7272, duplicated lines: 438</p></div><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/androidTest/java/puscas/mobilertapp/RayTracingTestEngine.java[179:45 - 195:32]<br/>app/src/androidTest/java/puscas/mobilertapp/RayTracingTestEngine.java[128:54 - 144:41]</div></header><div class="clone-description"><pre data-first-start="179" data-second-start="128" data-length="16">() throws TimeoutException {
        final int numCores = UtilsContext.getNumOfCores(this.activity);
        final int scene = Scene.OBJ.ordinal();

        // Mock the reply as the external file manager application, to select an OBJ file.
        final Intent resultData;
        if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.KITKAT) {
            resultData = new Intent(Intent.ACTION_GET_CONTENT);
        } else {
            resultData = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        }
        resultData.addCategory(Intent.CATEGORY_OPENABLE);
        resultData.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.JELLY_BEAN_MR2) {
            resultData.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        }
        final String sdCardPath</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/androidTest/java/puscas/mobilertapp/RayTracingTest.java[199:125 - 205:64]<br/>app/src/androidTest/java/puscas/mobilertapp/RayTracingTest.java[148:120 - 154:73]</div></header><div class="clone-description"><pre data-first-start="199" data-second-start="148" data-length="6">));
            final ClipData clipData = new ClipData(new ClipDescription(&quot;Scene&quot;, new String[]{&quot;*&quot; + ConstantsUI.FILE_SEPARATOR + &quot;*&quot;}), new ClipData.Item(objFile));
            clipData.addItem(new ClipData.Item(mtlFile));
            clipData.addItem(new ClipData.Item(camFile));
            resultData.setClipData(clipData);
        } else {
            resultData.setData(Uri.fromFile(new File(sdCardPath</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/androidTest/java/puscas/mobilertapp/RayTracingTest.java[205:124 - 228:8]<br/>app/src/androidTest/java/puscas/mobilertapp/RayTracingTest.java[154:119 - 177:8]</div></header><div class="clone-description"><pre data-first-start="205" data-second-start="154" data-length="23">)));
        }
        final Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK, resultData);

        Intents.intending(IntentMatchers.anyIntent())
            .respondWith(result);
        assertRenderScene(numCores, scene, false</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/androidTest/java/puscas/mobilertapp/RayTracingTestEngine.java[159:121 - 179:8]<br/>app/src/androidTest/java/puscas/mobilertapp/RayTracingTestEngine.java[91:83 - 151:8]</div></header><div class="clone-description"><pre data-first-start="159" data-second-start="91" data-length="20">);
        final Intent resultData = new Intent(Intent.ACTION_GET_CONTENT);
        resultData.setData(Uri.fromFile(fileToObj));
        final Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK, resultData);

        Assume.assumeTrue(&quot;Since Android 11, it's not possible to read files from SD card without an Intent.&quot;,
            Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.S
        );
        assertRenderScene(numCores, scene, false);
        Intents.intended(IntentMatchers.anyIntent());
    }

    /**
     * Helper method that clicks the Render {@link android.widget.Button} and waits for the
     * Ray Tracing engine to render the whole scene and then checks if the resulted image in the
     * {@link Bitmap} has different values.
     *
     * @param numCores           The number of CPU cores to use in the Ray Tracing process.
     * @param scene              The desired scene to render.
     * @param expectedSameValues Whether the {@link Bitmap} should have have only one color.
     * @throws TimeoutException If it couldn't render the whole scene in time.
     */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/DrawViewTest.java[82:39 - 89:22]<br/>app/src/test/java/puscas/mobilertapp/DrawViewTest.java[58:32 - 65:23]</div></header><div class="clone-description"><pre data-first-start="82" data-second-start="58" data-length="7">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final DrawView drawView = PowerMockito.spy(new DrawView(new MainActivity()));

        final ContextWrapper contextMocked = Mockito.mock(ContextWrapper.class);
        final Context</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/DrawViewTest.java[107:46 - 113:23]<br/>app/src/test/java/puscas/mobilertapp/DrawViewTest.java[58:32 - 64:29]</div></header><div class="clone-description"><pre data-first-start="107" data-second-start="58" data-length="6">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final DrawView drawView = PowerMockito.spy(new DrawView(new MainActivity()));

        final TextView</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/DrawViewTest.java[207:111 - 212:21]<br/>app/src/test/java/puscas/mobilertapp/DrawViewTest.java[58:35 - 64:29]</div></header><div class="clone-description"><pre data-first-start="207" data-second-start="58" data-length="5">{
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final DrawView drawView = PowerMockito.spy(new DrawView(new MainActivity()));
        final Future</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/DrawViewTest.java[229:41 - 234:16]<br/>app/src/test/java/puscas/mobilertapp/DrawViewTest.java[58:32 - 64:14]</div></header><div class="clone-description"><pre data-first-start="229" data-second-start="58" data-length="5">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final DrawView drawView = PowerMockito.spy(new DrawView(new MainActivity()));
        Mockito</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainActivityTest.java[175:96 - 181:84]<br/>app/src/test/java/puscas/mobilertapp/MainActivityTest.java[144:82 - 150:75]</div></header><div class="clone-description"><pre data-first-start="175" data-second-start="144" data-length="6">);
        Mockito.when(intentMocked.getData())
            .thenReturn(uriMocked);

        try (final MockedStatic&lt;UtilsContext&gt; utilsContextMockedStatic = Mockito.mockStatic(UtilsContext.class);
             final MockedStatic&lt;Environment&gt; environmentMockedStatic = Mockito.mockStatic(Environment.class)) {
            utilsContextMockedStatic.when(() -&gt; UtilsContext.getInternalStoragePath</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[13:39 - 20:25]<br/>app/src/test/java/puscas/mobilertapp/MainActivityTest.java[14:24 - 21:26]</div></header><div class="clone-description"><pre data-first-start="13" data-second-start="14" data-length="7">;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentMatchers;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.api</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[17:32 - 25:16]<br/>app/src/test/java/puscas/mobilertapp/DrawViewTest.java[19:22 - 27:17]</div></header><div class="clone-description"><pre data-first-start="17" data-second-start="19" data-length="8">;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.api.support.membermodification.MemberModifier;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.springframework.test.util.ReflectionTestUtils;

import java.nio</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[82:40 - 89:64]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[53:37 - 60:66]</div></header><div class="clone-description"><pre data-first-start="82" data-second-start="53" data-length="7">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));

        final MainRenderer mainRenderer = createMainRenderer();

        final ActivityManager activityManagerMocked = Mockito.mock(ActivityManager.class);
        final ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
        ReflectionTestUtils.setField(memoryInfo, &quot;availMem&quot;, 9L</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[119:41 - 134:38]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[53:37 - 68:34]</div></header><div class="clone-description"><pre data-first-start="119" data-second-start="53" data-length="15">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));

        final MainRenderer mainRenderer = createMainRenderer();

        final ActivityManager activityManagerMocked = Mockito.mock(ActivityManager.class);
        final ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
        ReflectionTestUtils.setField(memoryInfo, &quot;availMem&quot;, 100L * BYTES_IN_MEGABYTE);
        ReflectionTestUtils.setField(mainRenderer, &quot;memoryInfo&quot;, memoryInfo);

        final int initialValue = 1;
        final CountDownLatch countDownLatch = new CountDownLatch(initialValue);
        final Runnable runnable = countDownLatch::countDown;

        mainRenderer.setActivityManager(activityManagerMocked);
        Assertions.assertThatThrownBy</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[185:30 - 195:30]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[175:30 - 185:30]</div></header><div class="clone-description"><pre data-first-start="185" data-second-start="175" data-length="10">);
            Mockito.when(bitmapMocked.getHeight())
                .thenReturn(1);
            Assertions.assertThatThrownBy(MainRenderer::new)
                .as(&quot;The MainRenderer#setBitmap method&quot;)
                .isInstanceOf(IllegalArgumentException.class);

            Mockito.when(bitmapMocked.isRecycled())
                .thenReturn(false);
            Mockito.when(bitmapMocked.getWidth())
                .thenReturn(1</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[299:49 - 306:30]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[209:46 - 254:21]</div></header><div class="clone-description"><pre data-first-start="299" data-second-start="209" data-length="7">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;showUiMessage&quot;));
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetRenderButton&quot;));

        final MainRenderer mainRenderer = createMainRenderer();

        final ActivityManager</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[330:55 - 347:12]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[209:46 - 314:19]</div></header><div class="clone-description"><pre data-first-start="330" data-second-start="209" data-length="17">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;showUiMessage&quot;));
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetRenderButton&quot;));

        final MainRenderer mainRenderer = createMainRenderer();

        final ActivityManager activityManagerMocked = PowerMockito.mock(ActivityManager.class);
        Mockito.doNothing()
            .when(activityManagerMocked)
            .getMemoryInfo(Mockito.any(ActivityManager.MemoryInfo.class));
        mainRenderer.setActivityManager(activityManagerMocked);

        final ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
        ReflectionTestUtils.setField(memoryInfo, &quot;availMem&quot;, 100L * BYTES_IN_MEGABYTE);
        ReflectionTestUtils.setField(mainRenderer, &quot;memoryInfo&quot;, memoryInfo);

        try</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[354:13 - 361:44]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[182:13 - 188:55]</div></header><div class="clone-description"><pre data-first-start="354" data-second-start="182" data-length="7">Mockito.when(bitmapMocked.isRecycled())
                .thenReturn(false);
            Mockito.when(bitmapMocked.getWidth())
                .thenReturn(2);
            Mockito.when(bitmapMocked.getHeight())
                .thenReturn(1);

            Assertions.assertThatThrownBy((</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[369:13 - 376:44]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[192:13 - 198:55]</div></header><div class="clone-description"><pre data-first-start="369" data-second-start="192" data-length="7">Mockito.when(bitmapMocked.isRecycled())
                .thenReturn(false);
            Mockito.when(bitmapMocked.getWidth())
                .thenReturn(1);
            Mockito.when(bitmapMocked.getHeight())
                .thenReturn(2);

            Assertions.assertThatThrownBy((</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MainRendererTest.java[392:40 - 399:34]<br/>app/src/test/java/puscas/mobilertapp/MainRendererTest.java[165:89 - 173:33]</div></header><div class="clone-description"><pre data-first-start="392" data-second-start="165" data-length="7">;
        try (final MockedStatic&lt;Bitmap&gt; bitmapMockedStatic = Mockito.mockStatic(Bitmap.class)) {
            final Bitmap bitmapMocked = Mockito.mock(Bitmap.class);
            bitmapMockedStatic.when(() -&gt; Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888))
                .thenReturn(bitmapMocked);

            Mockito.when(bitmapMocked.isRecycled())
                .thenReturn(false</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[13:27 - 19:13]<br/>app/src/test/java/puscas/mobilertapp/DrawViewTest.java[21:46 - 27:12]</div></header><div class="clone-description"><pre data-first-start="13" data-second-start="21" data-length="6">;
import org.powermock.api.support.membermodification.MemberModifier;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.springframework.test.util.ReflectionTestUtils;

import javax</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[274:49 - 286:48]<br/>app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[247:41 - 259:51]</div></header><div class="clone-description"><pre data-first-start="274" data-second-start="247" data-length="12">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final Context context = new MainActivity();
        final DrawView drawView = new DrawView(context);

        final GLSurfaceView.EGLContextFactory myEGLContextFactory = new MyEglContextFactory(drawView);
        final EGL10 egl = createEGL();

        // Values to be returned by the EGL10 mocked.
        eglContextDestroy = false;
        eglErrorReturnedByMock = EGL10.EGL_NONE</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[299:34 - 312:43]<br/>app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[247:41 - 260:40]</div></header><div class="clone-description"><pre data-first-start="299" data-second-start="247" data-length="13">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final Context context = new MainActivity();
        final DrawView drawView = new DrawView(context);

        final GLSurfaceView.EGLContextFactory myEGLContextFactory = new MyEglContextFactory(drawView);
        final EGL10 egl = createEGL();

        // Values to be returned by the EGL10 mocked.
        eglContextDestroy = false;
        eglErrorReturnedByMock = EGL10.EGL_SUCCESS;
        eglContextReturnedByMock = Mockito</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[325:37 - 336:36]<br/>app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[247:41 - 258:26]</div></header><div class="clone-description"><pre data-first-start="325" data-second-start="247" data-length="11">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final Context context = new MainActivity();
        final DrawView drawView = new DrawView(context);

        final GLSurfaceView.EGLContextFactory myEGLContextFactory = new MyEglContextFactory(drawView);
        final EGL10 egl = createEGL();

        // Values to be returned by the EGL10 mocked.
        // Mock the 1st EGLContext.</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[337:9 - 346:36]<br/>app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[310:9 - 318:6]</div></header><div class="clone-description"><pre data-first-start="337" data-second-start="310" data-length="9">eglContextDestroy = false;
        eglErrorReturnedByMock = EGL10.EGL_SUCCESS;
        eglContextReturnedByMock = Mockito.mock(EGLContext.class);

        final EGLContext eglContext = myEGLContextFactory.createContext(egl, null, null);
        Assertions.assertThat(eglContext)
            .as(&quot;The EGL context created&quot;)
            .isNotNull();

        // Mock the 2nd EGLContext.</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[364:42 - 383:19]<br/>app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[247:41 - 318:6]</div></header><div class="clone-description"><pre data-first-start="364" data-second-start="247" data-length="19">() {
        MemberModifier.suppress(MemberModifier.method(MainActivity.class, &quot;resetErrno&quot;));
        MemberModifier.suppress(MemberModifier.method(MainRenderer.class, &quot;setBitmap&quot;));

        final Context context = new MainActivity();
        final DrawView drawView = new DrawView(context);

        final GLSurfaceView.EGLContextFactory myEGLContextFactory = new MyEglContextFactory(drawView);
        final EGL10 egl = createEGL();

        // Values to be returned by the EGL10 mocked.
        eglContextDestroy = false;
        eglErrorReturnedByMock = EGL10.EGL_SUCCESS;
        eglContextReturnedByMock = Mockito.mock(EGLContext.class);

        final EGLContext eglContext = myEGLContextFactory.createContext(egl, null, null);
        Assertions.assertThat(eglContext)
            .as(&quot;The EGL context created&quot;)
            .isNotNull();
        Assertions</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[399:107 - 412:14]<br/>app/src/test/java/puscas/mobilertapp/MyEglContextFactoryTest.java[306:101 - 318:6]</div></header><div class="clone-description"><pre data-first-start="399" data-second-start="306" data-length="13">);
        final EGL10 egl = createEGL();

        // Values to be returned by the EGL10 mocked.
        eglContextDestroy = false;
        eglErrorReturnedByMock = EGL10.EGL_SUCCESS;
        eglContextReturnedByMock = Mockito.mock(EGLContext.class);

        final EGLContext eglContext = myEGLContextFactory.createContext(egl, null, null);
        Assertions.assertThat(eglContext)
            .as(&quot;The EGL context created&quot;)
            .isNotNull();

        final</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/main/java/puscas/mobilertapp/utils/UtilsGL.java[6:35 - 13:27]<br/>app/src/main/java/puscas/mobilertapp/MyEglContextFactory.java[7:36 - 14:26]</div></header><div class="clone-description"><pre data-first-start="6" data-second-start="7" data-length="7">;

import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;

import java8.util.function</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsMethodsTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.constants;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link ConstantsMethods} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsMethodsTest.java[22:75 - 28:62]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of ConstantsMethods&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsRendererTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.constants;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link ConstantsRenderer} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsRendererTest.java[22:77 - 28:63]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of ConstantsRenderer&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.constants;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link Constants} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsTest.java[22:61 - 28:55]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of Constants&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsToastTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.constants;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link ConstantsToast} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsToastTest.java[22:71 - 28:60]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of ConstantsToast&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsUITest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.constants;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link ConstantsUI} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/constants/ConstantsUITest.java[22:65 - 28:57]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of ConstantsUI&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsBufferTest.java[22:65 - 28:57]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of UtilsBuffer&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsContextTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/utils/UtilsBufferTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.utils;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link UtilsContext} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsContextTest.java[22:67 - 28:58]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of UtilsContext&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsGLTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/utils/UtilsBufferTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.utils;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link UtilsGL} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsGLTest.java[22:57 - 28:53]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of UtilsGL&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsGlMatricesTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/utils/UtilsBufferTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.utils;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link UtilsGlMatrices} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsGlMatricesTest.java[22:73 - 28:62]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of ConfigRenderTask&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsLoggingTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/utils/UtilsBufferTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.utils;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link UtilsLogging} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsLoggingTest.java[22:67 - 28:58]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of UtilsLogging&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsShaderTest.java[1:1 - 12:4]<br/>app/src/test/java/puscas/mobilertapp/utils/UtilsBufferTest.java[1:1 - 12:4]</div></header><div class="clone-description"><pre data-first-start="1" data-second-start="1" data-length="11">package puscas.mobilertapp.utils;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

/**
 * The unit tests for the {@link UtilsShader} util class.
 */</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsShaderTest.java[22:65 - 28:57]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="22" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of UtilsShader&quot;</pre></div></section><section class="clone"><header><button class="pure-button expand">+</button><button class="pure-button collapse">-</button><div class="clone-title">app/src/test/java/puscas/mobilertapp/utils/UtilsTest.java[30:53 - 36:51]<br/>app/src/test/java/puscas/mobilertapp/constants/ConstantsErrorTest.java[22:71 - 28:60]</div></header><div class="clone-description"><pre data-first-start="30" data-second-start="22" data-length="6">.class.getDeclaredConstructor();
        Assertions.assertThat(Modifier.isPrivate(constructor.getModifiers()))
            .as(&quot;The constructor is private&quot;)
            .isTrue();
        constructor.setAccessible(true);
        Assertions.assertThatThrownBy(constructor::newInstance)
            .as(&quot;The default constructor of Utils&quot;</pre></div></section><a name="kotlin"></a><h1 class="content-subhead">kotlin</h1><div class="mode-stats"><p><span class="mode-rate">0%</span> Total files: 1, total lines of code: 124, duplicated lines: 0</p></div></div><div class="footer"><p>© 2013-2018 jscpd, copy/paste detector</p></div></div></div></body></html>