docs/jscpd-report/jscpd-report.html
<!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 "$(dirname "${0}")/.." || exit;
###############################################################################
###############################################################################
###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################
###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck > /dev/null; then
shellcheck "${0}" || 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 "$(dirname "${0}")/.." || exit;
###############################################################################
###############################################################################
###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################
###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck > /dev/null; then
shellcheck "${0}" || 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 "$(dirname "${0}")/.." || exit;
###############################################################################
###############################################################################
###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################
###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck > /dev/null; then
shellcheck "${0}" || 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 "$(dirname "${0}")/.." || exit;
###############################################################################
###############################################################################
###############################################################################
# Get helper functions.
###############################################################################
# shellcheck disable=SC1091
. scripts/helper_functions.sh;
###############################################################################
###############################################################################
###############################################################################
# Execute Shellcheck on this script.
###############################################################################
if command -v shellcheck > /dev/null; then
shellcheck "${0}" || 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 "${FILE_TO_SEARCH}" 2> /dev/null | head -n 1 || true);
MOBILERT_PATH=$(echo "${FIND_MOBILERT}" | sed 's/\/app\/.*//g' || true);
if [ -z "${MOBILERT_PATH}" ]; then
PATH_TO_SEARCH='/';
FIND_MOBILERT=$(find ${PATH_TO_SEARCH} -iname "MobileRT" 2> /dev/null | head -n 1);
MOBILERT_PATH=$(echo "${FIND_MOBILERT}" | sed "s/\/app\/${FILE_TO_SEARCH}/g");
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 "${PLOT_GRAPHS}" ]; then
PLOT_GRAPHS=${SCRIPTS_PATH}/"graphs";
fi
set -u;
mkdir -p "${PLOT_GRAPHS}";
set +u;
if [ -z "${PLOT_GRAPHS}" ]; then
PLOT_GRAPHS=${SCRIPTS_PATH}/"graphs";
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 > /dev/null 2>&1)';
returnValue="$?";
expected='0';
assertEqual "${expected}" "${returnValue}" "${_testName} -h";
_clearEnvVariables;
# Validate the help message returns the expected value.
eval '$(${_functionName} \? > /dev/null 2>&1)';
returnValue="$?";
expected='0';
assertEqual "${expected}" "${returnValue}" "${_testName} ?";
}
# 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 "${expected}" "${cpu_architecture}" "${_testName} -f";
_clearEnvVariables;
# Validate the help message returns the expected value.
eval '$(${_functionName} -h > /dev/null 2>&1)';
returnValue="$?";
expected='0';
assertEqual "${expected}" "${returnValue}" "${_testName} -h";
_clearEnvVariables;
# Validate the help message returns the expected value.
eval '$(${_functionName} \? > /dev/null 2>&1)';
returnValue="$?";
expected='0';
assertEqual "${expected}" "${returnValue}" "${_testName} ?";
}
# 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 "${expected}" "${cpu_architecture}" "${_testName} -f";
_clearEnvVariables;
# Validate the help message returns the expected value.
eval '$(${_functionName} -h > /dev/null 2>&1)';
returnValue="$?";
expected='0';
assertEqual "${expected}" "${returnValue}" "${_testName} -h";
_clearEnvVariables;
# Validate the help message returns the expected value.
eval '$(${_functionName} \? > /dev/null 2>&1)';
returnValue="$?";
expected='0';
assertEqual "${expected}" "${returnValue}" "${_testName} ?";
}
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<::std::int32_t> (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);, "");
}
/**
* 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 < ::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->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<0> (vertices), ::std::get<1> (vertices), ::std::get<2> (vertices)
)
.withNormals(
::std::get<0>(normal),
::std::get<1>(normal),
::std::get<2>(normal))
.withTexCoords(
::std::get<0>(texCoord),
::std::get<1>(texCoord),
::std::get<2>(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<0> (vertices), ::std::get<1> (vertices), ::std::get<2> (vertices)
)
.withNormals(
::std::get<0>(normal),
::std::get<1>(normal),
::std::get<2>(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<::std::int32_t> (scene->materials_.size())};
const auto &triangle {builder.withMaterialIndex(materialIndex).build()};
scene->triangles_.emplace_back(triangle);
scene->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->sample_.fetch_add(1, ::std::memory_order_relaxed)};
if (current >= (this->domainSize_ * (sample + 1))) {
this->sample_.fetch_sub(1, ::std::memory_order_relaxed);
return 1.0F;
}
const auto index {current - (sample * this->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 &intersection) {
const auto rayDepth {intersection.ray_.depth_};
if (rayDepth > RayDepthMax) {
return false;
}
const auto &lE {intersection.material_->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<::std::uint32_t> (m_config.width) * static_cast<::std::uint32_t> (m_config.height)};
LOG_DEBUG("width = ", m_config.width);
LOG_DEBUG("height = ", m_config.height);
m_config.bitmap = ::std::vector<::std::int32_t> (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->start(1000);
this->resize(m_config.width + 2, m_config.height + 70);
m_ui->graphicsView->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 < 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 >= 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("Scene", new String[]{"*" + ConstantsUI.FILE_SEPARATOR + "*"}), 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("Since Android 11, it's not possible to read files from SD card without an Intent.",
Build.VERSION.SDK_INT < 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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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<UtilsContext> utilsContextMockedStatic = Mockito.mockStatic(UtilsContext.class);
final MockedStatic<Environment> environmentMockedStatic = Mockito.mockStatic(Environment.class)) {
utilsContextMockedStatic.when(() -> 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, "resetErrno"));
final MainRenderer mainRenderer = createMainRenderer();
final ActivityManager activityManagerMocked = Mockito.mock(ActivityManager.class);
final ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
ReflectionTestUtils.setField(memoryInfo, "availMem", 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, "resetErrno"));
final MainRenderer mainRenderer = createMainRenderer();
final ActivityManager activityManagerMocked = Mockito.mock(ActivityManager.class);
final ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
ReflectionTestUtils.setField(memoryInfo, "availMem", 100L * BYTES_IN_MEGABYTE);
ReflectionTestUtils.setField(mainRenderer, "memoryInfo", 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("The MainRenderer#setBitmap method")
.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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainActivity.class, "showUiMessage"));
MemberModifier.suppress(MemberModifier.method(MainActivity.class, "resetRenderButton"));
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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainActivity.class, "showUiMessage"));
MemberModifier.suppress(MemberModifier.method(MainActivity.class, "resetRenderButton"));
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, "availMem", 100L * BYTES_IN_MEGABYTE);
ReflectionTestUtils.setField(mainRenderer, "memoryInfo", 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<Bitmap> bitmapMockedStatic = Mockito.mockStatic(Bitmap.class)) {
final Bitmap bitmapMocked = Mockito.mock(Bitmap.class);
bitmapMockedStatic.when(() -> 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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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("The EGL context created")
.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, "resetErrno"));
MemberModifier.suppress(MemberModifier.method(MainRenderer.class, "setBitmap"));
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("The EGL context created")
.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("The EGL context created")
.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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of ConstantsMethods"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of ConstantsRenderer"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of Constants"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of ConstantsToast"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of ConstantsUI"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of UtilsBuffer"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of UtilsContext"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of UtilsGL"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of ConfigRenderTask"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of UtilsLogging"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of UtilsShader"</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("The constructor is private")
.isTrue();
constructor.setAccessible(true);
Assertions.assertThatThrownBy(constructor::newInstance)
.as("The default constructor of Utils"</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>