mirror of
https://github.com/rjNemo/mars-rover-kata
synced 2026-06-06 02:36:48 +00:00
push to main
This commit is contained in:
parent
5c11a4e169
commit
dba93e3da5
28 changed files with 0 additions and 1757 deletions
BIN
.coverage
BIN
.coverage
Binary file not shown.
8
.idea/.gitignore
vendored
8
.idea/.gitignore
vendored
|
|
@ -1,8 +0,0 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectDictionaryState">
|
||||
<dictionary name="ruidy" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="JSXSyntaxUsed" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
<inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ourVersions">
|
||||
<value>
|
||||
<list size="2">
|
||||
<item index="0" class="java.lang.String" itemvalue="3.8" />
|
||||
<item index="1" class="java.lang.String" itemvalue="3.9" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredIdentifiers">
|
||||
<list>
|
||||
<option value="examples.work_queue.worker.sys" />
|
||||
<option value="examples.work_queue.worker.BlockingChannel" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/mars-rover.iml" filepath="$PROJECT_DIR$/.idea/mars-rover.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PrettierConfiguration">
|
||||
<option name="myRunOnSave" value="true" />
|
||||
<option name="myRunOnReformat" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectTasksOptions">
|
||||
<enabled-global>
|
||||
<option value="black" />
|
||||
</enabled-global>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,611 +0,0 @@
|
|||
// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
|
||||
// For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
|
||||
|
||||
// Coverage.py HTML report browser code.
|
||||
/*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */
|
||||
/*global coverage: true, document, window, $ */
|
||||
|
||||
coverage = {};
|
||||
|
||||
// Find all the elements with shortkey_* class, and use them to assign a shortcut key.
|
||||
coverage.assign_shortkeys = function () {
|
||||
$("*[class*='shortkey_']").each(function (i, e) {
|
||||
$.each($(e).attr("class").split(" "), function (i, c) {
|
||||
if (/^shortkey_/.test(c)) {
|
||||
$(document).bind('keydown', c.substr(9), function () {
|
||||
$(e).click();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Create the events for the help panel.
|
||||
coverage.wire_up_help_panel = function () {
|
||||
$("#keyboard_icon").click(function () {
|
||||
// Show the help panel, and position it so the keyboard icon in the
|
||||
// panel is in the same place as the keyboard icon in the header.
|
||||
$(".help_panel").show();
|
||||
var koff = $("#keyboard_icon").offset();
|
||||
var poff = $("#panel_icon").position();
|
||||
$(".help_panel").offset({
|
||||
top: koff.top-poff.top-1,
|
||||
left: koff.left-poff.left-1
|
||||
});
|
||||
});
|
||||
$("#panel_icon").click(function () {
|
||||
$(".help_panel").hide();
|
||||
});
|
||||
};
|
||||
|
||||
// Create the events for the filter box.
|
||||
coverage.wire_up_filter = function () {
|
||||
// Cache elements.
|
||||
var table = $("table.index");
|
||||
var table_rows = table.find("tbody tr");
|
||||
var table_row_names = table_rows.find("td.name a");
|
||||
var no_rows = $("#no_rows");
|
||||
|
||||
// Create a duplicate table footer that we can modify with dynamic summed values.
|
||||
var table_footer = $("table.index tfoot tr");
|
||||
var table_dynamic_footer = table_footer.clone();
|
||||
table_dynamic_footer.attr('class', 'total_dynamic hidden');
|
||||
table_footer.after(table_dynamic_footer);
|
||||
|
||||
// Observe filter keyevents.
|
||||
$("#filter").on("keyup change", $.debounce(150, function (event) {
|
||||
var filter_value = $(this).val();
|
||||
|
||||
if (filter_value === "") {
|
||||
// Filter box is empty, remove all filtering.
|
||||
table_rows.removeClass("hidden");
|
||||
|
||||
// Show standard footer, hide dynamic footer.
|
||||
table_footer.removeClass("hidden");
|
||||
table_dynamic_footer.addClass("hidden");
|
||||
|
||||
// Hide placeholder, show table.
|
||||
if (no_rows.length > 0) {
|
||||
no_rows.hide();
|
||||
}
|
||||
table.show();
|
||||
|
||||
}
|
||||
else {
|
||||
// Filter table items by value.
|
||||
var hidden = 0;
|
||||
var shown = 0;
|
||||
|
||||
// Hide / show elements.
|
||||
$.each(table_row_names, function () {
|
||||
var element = $(this).parents("tr");
|
||||
|
||||
if ($(this).text().indexOf(filter_value) === -1) {
|
||||
// hide
|
||||
element.addClass("hidden");
|
||||
hidden++;
|
||||
}
|
||||
else {
|
||||
// show
|
||||
element.removeClass("hidden");
|
||||
shown++;
|
||||
}
|
||||
});
|
||||
|
||||
// Show placeholder if no rows will be displayed.
|
||||
if (no_rows.length > 0) {
|
||||
if (shown === 0) {
|
||||
// Show placeholder, hide table.
|
||||
no_rows.show();
|
||||
table.hide();
|
||||
}
|
||||
else {
|
||||
// Hide placeholder, show table.
|
||||
no_rows.hide();
|
||||
table.show();
|
||||
}
|
||||
}
|
||||
|
||||
// Manage dynamic header:
|
||||
if (hidden > 0) {
|
||||
// Calculate new dynamic sum values based on visible rows.
|
||||
for (var column = 2; column < 20; column++) {
|
||||
// Calculate summed value.
|
||||
var cells = table_rows.find('td:nth-child(' + column + ')');
|
||||
if (!cells.length) {
|
||||
// No more columns...!
|
||||
break;
|
||||
}
|
||||
|
||||
var sum = 0, numer = 0, denom = 0;
|
||||
$.each(cells.filter(':visible'), function () {
|
||||
var ratio = $(this).data("ratio");
|
||||
if (ratio) {
|
||||
var splitted = ratio.split(" ");
|
||||
numer += parseInt(splitted[0], 10);
|
||||
denom += parseInt(splitted[1], 10);
|
||||
}
|
||||
else {
|
||||
sum += parseInt(this.innerHTML, 10);
|
||||
}
|
||||
});
|
||||
|
||||
// Get footer cell element.
|
||||
var footer_cell = table_dynamic_footer.find('td:nth-child(' + column + ')');
|
||||
|
||||
// Set value into dynamic footer cell element.
|
||||
if (cells[0].innerHTML.indexOf('%') > -1) {
|
||||
// Percentage columns use the numerator and denominator,
|
||||
// and adapt to the number of decimal places.
|
||||
var match = /\.([0-9]+)/.exec(cells[0].innerHTML);
|
||||
var places = 0;
|
||||
if (match) {
|
||||
places = match[1].length;
|
||||
}
|
||||
var pct = numer * 100 / denom;
|
||||
footer_cell.text(pct.toFixed(places) + '%');
|
||||
}
|
||||
else {
|
||||
footer_cell.text(sum);
|
||||
}
|
||||
}
|
||||
|
||||
// Hide standard footer, show dynamic footer.
|
||||
table_footer.addClass("hidden");
|
||||
table_dynamic_footer.removeClass("hidden");
|
||||
}
|
||||
else {
|
||||
// Show standard footer, hide dynamic footer.
|
||||
table_footer.removeClass("hidden");
|
||||
table_dynamic_footer.addClass("hidden");
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
// Trigger change event on setup, to force filter on page refresh
|
||||
// (filter value may still be present).
|
||||
$("#filter").trigger("change");
|
||||
};
|
||||
|
||||
// Loaded on index.html
|
||||
coverage.index_ready = function ($) {
|
||||
// Look for a localStorage item containing previous sort settings:
|
||||
var sort_list = [];
|
||||
var storage_name = "COVERAGE_INDEX_SORT";
|
||||
var stored_list = undefined;
|
||||
try {
|
||||
stored_list = localStorage.getItem(storage_name);
|
||||
} catch(err) {}
|
||||
|
||||
if (stored_list) {
|
||||
sort_list = JSON.parse('[[' + stored_list + ']]');
|
||||
}
|
||||
|
||||
// Create a new widget which exists only to save and restore
|
||||
// the sort order:
|
||||
$.tablesorter.addWidget({
|
||||
id: "persistentSort",
|
||||
|
||||
// Format is called by the widget before displaying:
|
||||
format: function (table) {
|
||||
if (table.config.sortList.length === 0 && sort_list.length > 0) {
|
||||
// This table hasn't been sorted before - we'll use
|
||||
// our stored settings:
|
||||
$(table).trigger('sorton', [sort_list]);
|
||||
}
|
||||
else {
|
||||
// This is not the first load - something has
|
||||
// already defined sorting so we'll just update
|
||||
// our stored value to match:
|
||||
sort_list = table.config.sortList;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Configure our tablesorter to handle the variable number of
|
||||
// columns produced depending on report options:
|
||||
var headers = [];
|
||||
var col_count = $("table.index > thead > tr > th").length;
|
||||
|
||||
headers[0] = { sorter: 'text' };
|
||||
for (i = 1; i < col_count-1; i++) {
|
||||
headers[i] = { sorter: 'digit' };
|
||||
}
|
||||
headers[col_count-1] = { sorter: 'percent' };
|
||||
|
||||
// Enable the table sorter:
|
||||
$("table.index").tablesorter({
|
||||
widgets: ['persistentSort'],
|
||||
headers: headers
|
||||
});
|
||||
|
||||
coverage.assign_shortkeys();
|
||||
coverage.wire_up_help_panel();
|
||||
coverage.wire_up_filter();
|
||||
|
||||
// Watch for page unload events so we can save the final sort settings:
|
||||
$(window).on("unload", function () {
|
||||
try {
|
||||
localStorage.setItem(storage_name, sort_list.toString())
|
||||
} catch(err) {}
|
||||
});
|
||||
};
|
||||
|
||||
// -- pyfile stuff --
|
||||
|
||||
coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS";
|
||||
|
||||
coverage.pyfile_ready = function ($) {
|
||||
// If we're directed to a particular line number, highlight the line.
|
||||
var frag = location.hash;
|
||||
if (frag.length > 2 && frag[1] === 't') {
|
||||
$(frag).addClass('highlight');
|
||||
coverage.set_sel(parseInt(frag.substr(2), 10));
|
||||
}
|
||||
else {
|
||||
coverage.set_sel(0);
|
||||
}
|
||||
|
||||
$(document)
|
||||
.bind('keydown', 'j', coverage.to_next_chunk_nicely)
|
||||
.bind('keydown', 'k', coverage.to_prev_chunk_nicely)
|
||||
.bind('keydown', '0', coverage.to_top)
|
||||
.bind('keydown', '1', coverage.to_first_chunk)
|
||||
;
|
||||
|
||||
$(".button_toggle_run").click(function (evt) {coverage.toggle_lines(evt.target, "run");});
|
||||
$(".button_toggle_exc").click(function (evt) {coverage.toggle_lines(evt.target, "exc");});
|
||||
$(".button_toggle_mis").click(function (evt) {coverage.toggle_lines(evt.target, "mis");});
|
||||
$(".button_toggle_par").click(function (evt) {coverage.toggle_lines(evt.target, "par");});
|
||||
|
||||
coverage.filters = undefined;
|
||||
try {
|
||||
coverage.filters = localStorage.getItem(coverage.LINE_FILTERS_STORAGE);
|
||||
} catch(err) {}
|
||||
|
||||
if (coverage.filters) {
|
||||
coverage.filters = JSON.parse(coverage.filters);
|
||||
}
|
||||
else {
|
||||
coverage.filters = {run: false, exc: true, mis: true, par: true};
|
||||
}
|
||||
|
||||
for (cls in coverage.filters) {
|
||||
coverage.set_line_visibilty(cls, coverage.filters[cls]);
|
||||
}
|
||||
|
||||
coverage.assign_shortkeys();
|
||||
coverage.wire_up_help_panel();
|
||||
|
||||
coverage.init_scroll_markers();
|
||||
|
||||
// Rebuild scroll markers when the window height changes.
|
||||
$(window).resize(coverage.build_scroll_markers);
|
||||
};
|
||||
|
||||
coverage.toggle_lines = function (btn, cls) {
|
||||
var onoff = !$(btn).hasClass("show_" + cls);
|
||||
coverage.set_line_visibilty(cls, onoff);
|
||||
coverage.build_scroll_markers();
|
||||
coverage.filters[cls] = onoff;
|
||||
try {
|
||||
localStorage.setItem(coverage.LINE_FILTERS_STORAGE, JSON.stringify(coverage.filters));
|
||||
} catch(err) {}
|
||||
};
|
||||
|
||||
coverage.set_line_visibilty = function (cls, onoff) {
|
||||
var show = "show_" + cls;
|
||||
var btn = $(".button_toggle_" + cls);
|
||||
if (onoff) {
|
||||
$("#source ." + cls).addClass(show);
|
||||
btn.addClass(show);
|
||||
}
|
||||
else {
|
||||
$("#source ." + cls).removeClass(show);
|
||||
btn.removeClass(show);
|
||||
}
|
||||
};
|
||||
|
||||
// Return the nth line div.
|
||||
coverage.line_elt = function (n) {
|
||||
return $("#t" + n);
|
||||
};
|
||||
|
||||
// Set the selection. b and e are line numbers.
|
||||
coverage.set_sel = function (b, e) {
|
||||
// The first line selected.
|
||||
coverage.sel_begin = b;
|
||||
// The next line not selected.
|
||||
coverage.sel_end = (e === undefined) ? b+1 : e;
|
||||
};
|
||||
|
||||
coverage.to_top = function () {
|
||||
coverage.set_sel(0, 1);
|
||||
coverage.scroll_window(0);
|
||||
};
|
||||
|
||||
coverage.to_first_chunk = function () {
|
||||
coverage.set_sel(0, 1);
|
||||
coverage.to_next_chunk();
|
||||
};
|
||||
|
||||
// Return a string indicating what kind of chunk this line belongs to,
|
||||
// or null if not a chunk.
|
||||
coverage.chunk_indicator = function (line_elt) {
|
||||
var klass = line_elt.attr('class');
|
||||
if (klass) {
|
||||
var m = klass.match(/\bshow_\w+\b/);
|
||||
if (m) {
|
||||
return m[0];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
coverage.to_next_chunk = function () {
|
||||
var c = coverage;
|
||||
|
||||
// Find the start of the next colored chunk.
|
||||
var probe = c.sel_end;
|
||||
var chunk_indicator, probe_line;
|
||||
while (true) {
|
||||
probe_line = c.line_elt(probe);
|
||||
if (probe_line.length === 0) {
|
||||
return;
|
||||
}
|
||||
chunk_indicator = c.chunk_indicator(probe_line);
|
||||
if (chunk_indicator) {
|
||||
break;
|
||||
}
|
||||
probe++;
|
||||
}
|
||||
|
||||
// There's a next chunk, `probe` points to it.
|
||||
var begin = probe;
|
||||
|
||||
// Find the end of this chunk.
|
||||
var next_indicator = chunk_indicator;
|
||||
while (next_indicator === chunk_indicator) {
|
||||
probe++;
|
||||
probe_line = c.line_elt(probe);
|
||||
next_indicator = c.chunk_indicator(probe_line);
|
||||
}
|
||||
c.set_sel(begin, probe);
|
||||
c.show_selection();
|
||||
};
|
||||
|
||||
coverage.to_prev_chunk = function () {
|
||||
var c = coverage;
|
||||
|
||||
// Find the end of the prev colored chunk.
|
||||
var probe = c.sel_begin-1;
|
||||
var probe_line = c.line_elt(probe);
|
||||
if (probe_line.length === 0) {
|
||||
return;
|
||||
}
|
||||
var chunk_indicator = c.chunk_indicator(probe_line);
|
||||
while (probe > 0 && !chunk_indicator) {
|
||||
probe--;
|
||||
probe_line = c.line_elt(probe);
|
||||
if (probe_line.length === 0) {
|
||||
return;
|
||||
}
|
||||
chunk_indicator = c.chunk_indicator(probe_line);
|
||||
}
|
||||
|
||||
// There's a prev chunk, `probe` points to its last line.
|
||||
var end = probe+1;
|
||||
|
||||
// Find the beginning of this chunk.
|
||||
var prev_indicator = chunk_indicator;
|
||||
while (prev_indicator === chunk_indicator) {
|
||||
probe--;
|
||||
probe_line = c.line_elt(probe);
|
||||
prev_indicator = c.chunk_indicator(probe_line);
|
||||
}
|
||||
c.set_sel(probe+1, end);
|
||||
c.show_selection();
|
||||
};
|
||||
|
||||
// Return the line number of the line nearest pixel position pos
|
||||
coverage.line_at_pos = function (pos) {
|
||||
var l1 = coverage.line_elt(1),
|
||||
l2 = coverage.line_elt(2),
|
||||
result;
|
||||
if (l1.length && l2.length) {
|
||||
var l1_top = l1.offset().top,
|
||||
line_height = l2.offset().top - l1_top,
|
||||
nlines = (pos - l1_top) / line_height;
|
||||
if (nlines < 1) {
|
||||
result = 1;
|
||||
}
|
||||
else {
|
||||
result = Math.ceil(nlines);
|
||||
}
|
||||
}
|
||||
else {
|
||||
result = 1;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
// Returns 0, 1, or 2: how many of the two ends of the selection are on
|
||||
// the screen right now?
|
||||
coverage.selection_ends_on_screen = function () {
|
||||
if (coverage.sel_begin === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var top = coverage.line_elt(coverage.sel_begin);
|
||||
var next = coverage.line_elt(coverage.sel_end-1);
|
||||
|
||||
return (
|
||||
(top.isOnScreen() ? 1 : 0) +
|
||||
(next.isOnScreen() ? 1 : 0)
|
||||
);
|
||||
};
|
||||
|
||||
coverage.to_next_chunk_nicely = function () {
|
||||
coverage.finish_scrolling();
|
||||
if (coverage.selection_ends_on_screen() === 0) {
|
||||
// The selection is entirely off the screen: select the top line on
|
||||
// the screen.
|
||||
var win = $(window);
|
||||
coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop()));
|
||||
}
|
||||
coverage.to_next_chunk();
|
||||
};
|
||||
|
||||
coverage.to_prev_chunk_nicely = function () {
|
||||
coverage.finish_scrolling();
|
||||
if (coverage.selection_ends_on_screen() === 0) {
|
||||
var win = $(window);
|
||||
coverage.select_line_or_chunk(coverage.line_at_pos(win.scrollTop() + win.height()));
|
||||
}
|
||||
coverage.to_prev_chunk();
|
||||
};
|
||||
|
||||
// Select line number lineno, or if it is in a colored chunk, select the
|
||||
// entire chunk
|
||||
coverage.select_line_or_chunk = function (lineno) {
|
||||
var c = coverage;
|
||||
var probe_line = c.line_elt(lineno);
|
||||
if (probe_line.length === 0) {
|
||||
return;
|
||||
}
|
||||
var the_indicator = c.chunk_indicator(probe_line);
|
||||
if (the_indicator) {
|
||||
// The line is in a highlighted chunk.
|
||||
// Search backward for the first line.
|
||||
var probe = lineno;
|
||||
var indicator = the_indicator;
|
||||
while (probe > 0 && indicator === the_indicator) {
|
||||
probe--;
|
||||
probe_line = c.line_elt(probe);
|
||||
if (probe_line.length === 0) {
|
||||
break;
|
||||
}
|
||||
indicator = c.chunk_indicator(probe_line);
|
||||
}
|
||||
var begin = probe + 1;
|
||||
|
||||
// Search forward for the last line.
|
||||
probe = lineno;
|
||||
indicator = the_indicator;
|
||||
while (indicator === the_indicator) {
|
||||
probe++;
|
||||
probe_line = c.line_elt(probe);
|
||||
indicator = c.chunk_indicator(probe_line);
|
||||
}
|
||||
|
||||
coverage.set_sel(begin, probe);
|
||||
}
|
||||
else {
|
||||
coverage.set_sel(lineno);
|
||||
}
|
||||
};
|
||||
|
||||
coverage.show_selection = function () {
|
||||
var c = coverage;
|
||||
|
||||
// Highlight the lines in the chunk
|
||||
$("#source .highlight").removeClass("highlight");
|
||||
for (var probe = c.sel_begin; probe > 0 && probe < c.sel_end; probe++) {
|
||||
c.line_elt(probe).addClass("highlight");
|
||||
}
|
||||
|
||||
c.scroll_to_selection();
|
||||
};
|
||||
|
||||
coverage.scroll_to_selection = function () {
|
||||
// Scroll the page if the chunk isn't fully visible.
|
||||
if (coverage.selection_ends_on_screen() < 2) {
|
||||
// Need to move the page. The html,body trick makes it scroll in all
|
||||
// browsers, got it from http://stackoverflow.com/questions/3042651
|
||||
var top = coverage.line_elt(coverage.sel_begin);
|
||||
var top_pos = parseInt(top.offset().top, 10);
|
||||
coverage.scroll_window(top_pos - 30);
|
||||
}
|
||||
};
|
||||
|
||||
coverage.scroll_window = function (to_pos) {
|
||||
$("html,body").animate({scrollTop: to_pos}, 200);
|
||||
};
|
||||
|
||||
coverage.finish_scrolling = function () {
|
||||
$("html,body").stop(true, true);
|
||||
};
|
||||
|
||||
coverage.init_scroll_markers = function () {
|
||||
var c = coverage;
|
||||
// Init some variables
|
||||
c.lines_len = $('#source p').length;
|
||||
c.body_h = $('body').height();
|
||||
c.header_h = $('div#header').height();
|
||||
|
||||
// Build html
|
||||
c.build_scroll_markers();
|
||||
};
|
||||
|
||||
coverage.build_scroll_markers = function () {
|
||||
var c = coverage,
|
||||
min_line_height = 3,
|
||||
max_line_height = 10,
|
||||
visible_window_h = $(window).height();
|
||||
|
||||
c.lines_to_mark = $('#source').find('p.show_run, p.show_mis, p.show_exc, p.show_exc, p.show_par');
|
||||
$('#scroll_marker').remove();
|
||||
// Don't build markers if the window has no scroll bar.
|
||||
if (c.body_h <= visible_window_h) {
|
||||
return;
|
||||
}
|
||||
|
||||
$("body").append("<div id='scroll_marker'> </div>");
|
||||
var scroll_marker = $('#scroll_marker'),
|
||||
marker_scale = scroll_marker.height() / c.body_h,
|
||||
line_height = scroll_marker.height() / c.lines_len;
|
||||
|
||||
// Line height must be between the extremes.
|
||||
if (line_height > min_line_height) {
|
||||
if (line_height > max_line_height) {
|
||||
line_height = max_line_height;
|
||||
}
|
||||
}
|
||||
else {
|
||||
line_height = min_line_height;
|
||||
}
|
||||
|
||||
var previous_line = -99,
|
||||
last_mark,
|
||||
last_top,
|
||||
offsets = {};
|
||||
|
||||
// Calculate line offsets outside loop to prevent relayouts
|
||||
c.lines_to_mark.each(function() {
|
||||
offsets[this.id] = $(this).offset().top;
|
||||
});
|
||||
c.lines_to_mark.each(function () {
|
||||
var id_name = $(this).attr('id'),
|
||||
line_top = Math.round(offsets[id_name] * marker_scale),
|
||||
line_number = parseInt(id_name.substring(1, id_name.length));
|
||||
|
||||
if (line_number === previous_line + 1) {
|
||||
// If this solid missed block just make previous mark higher.
|
||||
last_mark.css({
|
||||
'height': line_top + line_height - last_top
|
||||
});
|
||||
}
|
||||
else {
|
||||
// Add colored line in scroll_marker block.
|
||||
scroll_marker.append('<div id="m' + line_number + '" class="marker"></div>');
|
||||
last_mark = $('#m' + line_number);
|
||||
last_mark.css({
|
||||
'height': line_height,
|
||||
'top': line_top
|
||||
});
|
||||
last_top = line_top;
|
||||
}
|
||||
|
||||
previous_line = line_number;
|
||||
});
|
||||
};
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
|
||||
<title>Coverage for tests/__init__.py: 100%</title>
|
||||
<link rel="icon" sizes="32x32" href="favicon_32.png">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.hotkeys.js"></script>
|
||||
<script type="text/javascript" src="jquery.isonscreen.js"></script>
|
||||
<script type="text/javascript" src="coverage_html.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(coverage.pyfile_ready);
|
||||
</script>
|
||||
</head>
|
||||
<body class="pyfile">
|
||||
<div id="header">
|
||||
<div class="content">
|
||||
<h1>Coverage for <b>tests/__init__.py</b> :
|
||||
<span class="pc_cov">100%</span>
|
||||
</h1>
|
||||
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
|
||||
<h2 class="stats">
|
||||
0 statements
|
||||
<button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">0 run</button>
|
||||
<button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">0 missing</button>
|
||||
<button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="help_panel">
|
||||
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
|
||||
<p class="legend">Hot-keys on this page</p>
|
||||
<div>
|
||||
<p class="keyhelp">
|
||||
<span class="key">r</span>
|
||||
<span class="key">m</span>
|
||||
<span class="key">x</span>
|
||||
<span class="key">p</span> toggle line displays
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">j</span>
|
||||
<span class="key">k</span> next/prev highlighted chunk
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">0</span> (zero) top of page
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">1</span> (one) first highlighted chunk
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="source">
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<p>
|
||||
<a class="nav" href="index.html">« index</a> <a class="nav" href="https://coverage.readthedocs.io/en/6.0b1">coverage.py v6.0b1</a>,
|
||||
created at 2021-08-27 10:41 +0200
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
|
||||
<title>Coverage for tests/conftest.py: 100%</title>
|
||||
<link rel="icon" sizes="32x32" href="favicon_32.png">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.hotkeys.js"></script>
|
||||
<script type="text/javascript" src="jquery.isonscreen.js"></script>
|
||||
<script type="text/javascript" src="coverage_html.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(coverage.pyfile_ready);
|
||||
</script>
|
||||
</head>
|
||||
<body class="pyfile">
|
||||
<div id="header">
|
||||
<div class="content">
|
||||
<h1>Coverage for <b>tests/conftest.py</b> :
|
||||
<span class="pc_cov">100%</span>
|
||||
</h1>
|
||||
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
|
||||
<h2 class="stats">
|
||||
5 statements
|
||||
<button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">5 run</button>
|
||||
<button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">0 missing</button>
|
||||
<button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="help_panel">
|
||||
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
|
||||
<p class="legend">Hot-keys on this page</p>
|
||||
<div>
|
||||
<p class="keyhelp">
|
||||
<span class="key">r</span>
|
||||
<span class="key">m</span>
|
||||
<span class="key">x</span>
|
||||
<span class="key">p</span> toggle line displays
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">j</span>
|
||||
<span class="key">k</span> next/prev highlighted chunk
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">0</span> (zero) top of page
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">1</span> (one) first highlighted chunk
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="source">
|
||||
<p id="t1" class="run"><span class="n"><a href="#t1">1</a></span><span class="t"><span class="key">import</span> <span class="nam">pytest</span> <span class="key">as</span> <span class="nam">pytest</span> </span><span class="r"></span></p>
|
||||
<p id="t2" class="pln"><span class="n"><a href="#t2">2</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t3" class="run"><span class="n"><a href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">rover</span><span class="op">.</span><span class="nam">rover</span> <span class="key">import</span> <span class="nam">Rover</span> </span><span class="r"></span></p>
|
||||
<p id="t4" class="pln"><span class="n"><a href="#t4">4</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t5" class="pln"><span class="n"><a href="#t5">5</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t6" class="run"><span class="n"><a href="#t6">6</a></span><span class="t"><span class="op">@</span><span class="nam">pytest</span><span class="op">.</span><span class="nam">fixture</span> </span><span class="r"></span></p>
|
||||
<p id="t7" class="run"><span class="n"><a href="#t7">7</a></span><span class="t"><span class="key">def</span> <span class="nam">rover</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t8" class="run"><span class="n"><a href="#t8">8</a></span><span class="t"> <span class="key">return</span> <span class="nam">Rover</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<p>
|
||||
<a class="nav" href="index.html">« index</a> <a class="nav" href="https://coverage.readthedocs.io/en/6.0b1">coverage.py v6.0b1</a>,
|
||||
created at 2021-08-27 10:53 +0200
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,142 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
|
||||
<title>Coverage for tests/test_rover.py: 100%</title>
|
||||
<link rel="icon" sizes="32x32" href="favicon_32.png">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.hotkeys.js"></script>
|
||||
<script type="text/javascript" src="jquery.isonscreen.js"></script>
|
||||
<script type="text/javascript" src="coverage_html.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(coverage.pyfile_ready);
|
||||
</script>
|
||||
</head>
|
||||
<body class="pyfile">
|
||||
<div id="header">
|
||||
<div class="content">
|
||||
<h1>Coverage for <b>tests/test_rover.py</b> :
|
||||
<span class="pc_cov">100%</span>
|
||||
</h1>
|
||||
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
|
||||
<h2 class="stats">
|
||||
23 statements
|
||||
<button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">23 run</button>
|
||||
<button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">0 missing</button>
|
||||
<button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="help_panel">
|
||||
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
|
||||
<p class="legend">Hot-keys on this page</p>
|
||||
<div>
|
||||
<p class="keyhelp">
|
||||
<span class="key">r</span>
|
||||
<span class="key">m</span>
|
||||
<span class="key">x</span>
|
||||
<span class="key">p</span> toggle line displays
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">j</span>
|
||||
<span class="key">k</span> next/prev highlighted chunk
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">0</span> (zero) top of page
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">1</span> (one) first highlighted chunk
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="source">
|
||||
<p id="t1" class="run"><span class="n"><a href="#t1">1</a></span><span class="t"><span class="key">import</span> <span class="nam">pytest</span> </span><span class="r"></span></p>
|
||||
<p id="t2" class="pln"><span class="n"><a href="#t2">2</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t3" class="run"><span class="n"><a href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">rover</span><span class="op">.</span><span class="nam">rover</span> <span class="key">import</span> <span class="nam">Rover</span> </span><span class="r"></span></p>
|
||||
<p id="t4" class="pln"><span class="n"><a href="#t4">4</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t5" class="pln"><span class="n"><a href="#t5">5</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t6" class="run"><span class="n"><a href="#t6">6</a></span><span class="t"><span class="key">def</span> <span class="nam">test_rover_initialisation</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t7" class="run"><span class="n"><a href="#t7">7</a></span><span class="t"> <span class="key">assert</span> <span class="nam">Rover</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t8" class="pln"><span class="n"><a href="#t8">8</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t9" class="pln"><span class="n"><a href="#t9">9</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t10" class="run"><span class="n"><a href="#t10">10</a></span><span class="t"><span class="key">def</span> <span class="nam">test_rover_can_move</span><span class="op">(</span><span class="nam">rover</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t11" class="run"><span class="n"><a href="#t11">11</a></span><span class="t"> <span class="nam">command</span> <span class="op">=</span> <span class="str">"F"</span> </span><span class="r"></span></p>
|
||||
<p id="t12" class="run"><span class="n"><a href="#t12">12</a></span><span class="t"> <span class="key">assert</span> <span class="nam">rover</span><span class="op">.</span><span class="nam">move</span><span class="op">(</span><span class="nam">command</span><span class="op">)</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span> </span><span class="r"></span></p>
|
||||
<p id="t13" class="pln"><span class="n"><a href="#t13">13</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t14" class="pln"><span class="n"><a href="#t14">14</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t15" class="run"><span class="n"><a href="#t15">15</a></span><span class="t"><span class="op">@</span><span class="nam">pytest</span><span class="op">.</span><span class="nam">mark</span><span class="op">.</span><span class="nam">parametrize</span><span class="op">(</span> </span><span class="r"></span></p>
|
||||
<p id="t16" class="pln"><span class="n"><a href="#t16">16</a></span><span class="t"> <span class="op">(</span><span class="str">"init"</span><span class="op">,</span> <span class="str">"command"</span><span class="op">,</span> <span class="str">"expected"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t17" class="pln"><span class="n"><a href="#t17">17</a></span><span class="t"> <span class="op">[</span> </span><span class="r"></span></p>
|
||||
<p id="t18" class="pln"><span class="n"><a href="#t18">18</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> <span class="str">"F"</span><span class="op">,</span> <span class="op">(</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t19" class="pln"><span class="n"><a href="#t19">19</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> <span class="str">"B"</span><span class="op">,</span> <span class="op">(</span><span class="op">-</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t20" class="pln"><span class="n"><a href="#t20">20</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> <span class="str">"R"</span><span class="op">,</span> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"SOUTH"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t21" class="pln"><span class="n"><a href="#t21">21</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> <span class="str">"L"</span><span class="op">,</span> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t22" class="pln"><span class="n"><a href="#t22">22</a></span><span class="t"> <span class="com"># change starting point</span> </span><span class="r"></span></p>
|
||||
<p id="t23" class="pln"><span class="n"><a href="#t23">23</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"WEST"</span><span class="op">)</span><span class="op">,</span> <span class="str">"F"</span><span class="op">,</span> <span class="op">(</span><span class="op">-</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"WEST"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t24" class="pln"><span class="n"><a href="#t24">24</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"SOUTH"</span><span class="op">)</span><span class="op">,</span> <span class="str">"R"</span><span class="op">,</span> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"WEST"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t25" class="pln"><span class="n"><a href="#t25">25</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"SOUTH"</span><span class="op">)</span><span class="op">,</span> <span class="str">"F"</span><span class="op">,</span> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="op">-</span><span class="num">1</span><span class="op">,</span> <span class="str">"SOUTH"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t26" class="pln"><span class="n"><a href="#t26">26</a></span><span class="t"> <span class="op">]</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t27" class="pln"><span class="n"><a href="#t27">27</a></span><span class="t"><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t28" class="run"><span class="n"><a href="#t28">28</a></span><span class="t"><span class="key">def</span> <span class="nam">test_rover_receive_commands</span><span class="op">(</span><span class="nam">init</span><span class="op">,</span> <span class="nam">command</span><span class="op">,</span> <span class="nam">expected</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t29" class="run"><span class="n"><a href="#t29">29</a></span><span class="t"> <span class="nam">rover</span> <span class="op">=</span> <span class="nam">Rover</span><span class="op">(</span><span class="op">*</span><span class="nam">init</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t30" class="run"><span class="n"><a href="#t30">30</a></span><span class="t"> <span class="key">assert</span> <span class="nam">rover</span><span class="op">.</span><span class="nam">move</span><span class="op">(</span><span class="nam">command</span><span class="op">)</span> <span class="op">==</span> <span class="nam">expected</span> </span><span class="r"></span></p>
|
||||
<p id="t31" class="pln"><span class="n"><a href="#t31">31</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t32" class="pln"><span class="n"><a href="#t32">32</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t33" class="run"><span class="n"><a href="#t33">33</a></span><span class="t"><span class="key">def</span> <span class="nam">test_rover_rejects_invalid_commands</span><span class="op">(</span><span class="nam">rover</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t34" class="run"><span class="n"><a href="#t34">34</a></span><span class="t"> <span class="nam">command</span> <span class="op">=</span> <span class="str">" W "</span> </span><span class="r"></span></p>
|
||||
<p id="t35" class="run"><span class="n"><a href="#t35">35</a></span><span class="t"> <span class="key">with</span> <span class="nam">pytest</span><span class="op">.</span><span class="nam">raises</span><span class="op">(</span><span class="nam">ValueError</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t36" class="run"><span class="n"><a href="#t36">36</a></span><span class="t"> <span class="nam">rover</span><span class="op">.</span><span class="nam">move</span><span class="op">(</span><span class="nam">command</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t37" class="pln"><span class="n"><a href="#t37">37</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t38" class="pln"><span class="n"><a href="#t38">38</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t39" class="run"><span class="n"><a href="#t39">39</a></span><span class="t"><span class="op">@</span><span class="nam">pytest</span><span class="op">.</span><span class="nam">mark</span><span class="op">.</span><span class="nam">parametrize</span><span class="op">(</span> </span><span class="r"></span></p>
|
||||
<p id="t40" class="pln"><span class="n"><a href="#t40">40</a></span><span class="t"> <span class="op">(</span><span class="str">"init"</span><span class="op">,</span> <span class="str">"command"</span><span class="op">,</span> <span class="str">"expected"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t41" class="pln"><span class="n"><a href="#t41">41</a></span><span class="t"> <span class="op">[</span> </span><span class="r"></span></p>
|
||||
<p id="t42" class="pln"><span class="n"><a href="#t42">42</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">,</span> <span class="str">"FB"</span><span class="op">,</span> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t43" class="pln"><span class="n"><a href="#t43">43</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">,</span> <span class="str">"FF"</span><span class="op">,</span> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">2</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t44" class="pln"><span class="n"><a href="#t44">44</a></span><span class="t"> <span class="op">(</span><span class="op">(</span><span class="num">4</span><span class="op">,</span> <span class="num">2</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> <span class="str">"FLFFFRFLB"</span><span class="op">,</span> <span class="op">(</span><span class="num">6</span><span class="op">,</span> <span class="num">4</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t45" class="pln"><span class="n"><a href="#t45">45</a></span><span class="t"> <span class="op">]</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t46" class="pln"><span class="n"><a href="#t46">46</a></span><span class="t"><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t47" class="run"><span class="n"><a href="#t47">47</a></span><span class="t"><span class="key">def</span> <span class="nam">test_rover_can_receive_multiple_commands</span><span class="op">(</span><span class="nam">init</span><span class="op">,</span> <span class="nam">command</span><span class="op">,</span> <span class="nam">expected</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t48" class="run"><span class="n"><a href="#t48">48</a></span><span class="t"> <span class="nam">rover</span> <span class="op">=</span> <span class="nam">Rover</span><span class="op">(</span><span class="op">*</span><span class="nam">init</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t49" class="run"><span class="n"><a href="#t49">49</a></span><span class="t"> <span class="key">assert</span> <span class="nam">rover</span><span class="op">.</span><span class="nam">move</span><span class="op">(</span><span class="nam">command</span><span class="op">)</span> <span class="op">==</span> <span class="nam">expected</span> </span><span class="r"></span></p>
|
||||
<p id="t50" class="pln"><span class="n"><a href="#t50">50</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t51" class="pln"><span class="n"><a href="#t51">51</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t52" class="run"><span class="n"><a href="#t52">52</a></span><span class="t"><span class="op">@</span><span class="nam">pytest</span><span class="op">.</span><span class="nam">mark</span><span class="op">.</span><span class="nam">parametrize</span><span class="op">(</span> </span><span class="r"></span></p>
|
||||
<p id="t53" class="pln"><span class="n"><a href="#t53">53</a></span><span class="t"> <span class="op">(</span><span class="str">"init"</span><span class="op">,</span> <span class="str">"obstacles"</span><span class="op">,</span> <span class="str">"command"</span><span class="op">,</span> <span class="str">"expected"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t54" class="pln"><span class="n"><a href="#t54">54</a></span><span class="t"> <span class="op">[</span> </span><span class="r"></span></p>
|
||||
<p id="t55" class="pln"><span class="n"><a href="#t55">55</a></span><span class="t"> <span class="op">(</span> </span><span class="r"></span></p>
|
||||
<p id="t56" class="pln"><span class="n"><a href="#t56">56</a></span><span class="t"> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t57" class="pln"><span class="n"><a href="#t57">57</a></span><span class="t"> <span class="op">[</span><span class="op">[</span><span class="num">0</span><span class="op">,</span> <span class="num">1</span><span class="op">]</span><span class="op">]</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t58" class="pln"><span class="n"><a href="#t58">58</a></span><span class="t"> <span class="str">"F"</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t59" class="pln"><span class="n"><a href="#t59">59</a></span><span class="t"> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">,</span> <span class="str">"STOPPED"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t60" class="pln"><span class="n"><a href="#t60">60</a></span><span class="t"> <span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t61" class="pln"><span class="n"><a href="#t61">61</a></span><span class="t"> <span class="op">(</span> </span><span class="r"></span></p>
|
||||
<p id="t62" class="pln"><span class="n"><a href="#t62">62</a></span><span class="t"> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t63" class="pln"><span class="n"><a href="#t63">63</a></span><span class="t"> <span class="op">[</span><span class="op">[</span><span class="num">1</span><span class="op">,</span> <span class="num">1</span><span class="op">]</span><span class="op">]</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t64" class="pln"><span class="n"><a href="#t64">64</a></span><span class="t"> <span class="str">"FRF"</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t65" class="pln"><span class="n"><a href="#t65">65</a></span><span class="t"> <span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">1</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">,</span> <span class="str">"STOPPED"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t66" class="pln"><span class="n"><a href="#t66">66</a></span><span class="t"> <span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t67" class="pln"><span class="n"><a href="#t67">67</a></span><span class="t"> <span class="op">(</span> </span><span class="r"></span></p>
|
||||
<p id="t68" class="pln"><span class="n"><a href="#t68">68</a></span><span class="t"> <span class="op">(</span><span class="num">4</span><span class="op">,</span> <span class="num">2</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t69" class="pln"><span class="n"><a href="#t69">69</a></span><span class="t"> <span class="op">[</span><span class="op">[</span><span class="num">1</span><span class="op">,</span> <span class="num">4</span><span class="op">]</span><span class="op">,</span> <span class="op">[</span><span class="num">5</span><span class="op">,</span> <span class="num">5</span><span class="op">]</span><span class="op">,</span> <span class="op">[</span><span class="num">7</span><span class="op">,</span> <span class="num">4</span><span class="op">]</span><span class="op">]</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t70" class="pln"><span class="n"><a href="#t70">70</a></span><span class="t"> <span class="str">"FLFFFRFLB"</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t71" class="pln"><span class="n"><a href="#t71">71</a></span><span class="t"> <span class="op">(</span><span class="num">5</span><span class="op">,</span> <span class="num">4</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">,</span> <span class="str">"STOPPED"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t72" class="pln"><span class="n"><a href="#t72">72</a></span><span class="t"> <span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t73" class="pln"><span class="n"><a href="#t73">73</a></span><span class="t"> <span class="op">]</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t74" class="pln"><span class="n"><a href="#t74">74</a></span><span class="t"><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t75" class="run"><span class="n"><a href="#t75">75</a></span><span class="t"><span class="key">def</span> <span class="nam">test_rover_avoids_obstacles</span><span class="op">(</span><span class="nam">init</span><span class="op">,</span> <span class="nam">obstacles</span><span class="op">,</span> <span class="nam">command</span><span class="op">,</span> <span class="nam">expected</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t76" class="run"><span class="n"><a href="#t76">76</a></span><span class="t"> <span class="nam">rover</span> <span class="op">=</span> <span class="nam">Rover</span><span class="op">(</span><span class="op">*</span><span class="nam">init</span><span class="op">,</span> <span class="nam">obstacles</span><span class="op">=</span><span class="nam">obstacles</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t77" class="run"><span class="n"><a href="#t77">77</a></span><span class="t"> <span class="key">assert</span> <span class="nam">rover</span><span class="op">.</span><span class="nam">move</span><span class="op">(</span><span class="nam">command</span><span class="op">)</span> <span class="op">==</span> <span class="nam">expected</span> </span><span class="r"></span></p>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<p>
|
||||
<a class="nav" href="index.html">« index</a> <a class="nav" href="https://coverage.readthedocs.io/en/6.0b1">coverage.py v6.0b1</a>,
|
||||
created at 2021-08-27 15:04 +0200
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
|
||||
<title>Coverage for rover/__init__.py: 100%</title>
|
||||
<link rel="icon" sizes="32x32" href="favicon_32.png">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.hotkeys.js"></script>
|
||||
<script type="text/javascript" src="jquery.isonscreen.js"></script>
|
||||
<script type="text/javascript" src="coverage_html.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(coverage.pyfile_ready);
|
||||
</script>
|
||||
</head>
|
||||
<body class="pyfile">
|
||||
<div id="header">
|
||||
<div class="content">
|
||||
<h1>Coverage for <b>rover/__init__.py</b> :
|
||||
<span class="pc_cov">100%</span>
|
||||
</h1>
|
||||
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
|
||||
<h2 class="stats">
|
||||
0 statements
|
||||
<button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">0 run</button>
|
||||
<button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">0 missing</button>
|
||||
<button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="help_panel">
|
||||
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
|
||||
<p class="legend">Hot-keys on this page</p>
|
||||
<div>
|
||||
<p class="keyhelp">
|
||||
<span class="key">r</span>
|
||||
<span class="key">m</span>
|
||||
<span class="key">x</span>
|
||||
<span class="key">p</span> toggle line displays
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">j</span>
|
||||
<span class="key">k</span> next/prev highlighted chunk
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">0</span> (zero) top of page
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">1</span> (one) first highlighted chunk
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="source">
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<p>
|
||||
<a class="nav" href="index.html">« index</a> <a class="nav" href="https://coverage.readthedocs.io/en/6.0b1">coverage.py v6.0b1</a>,
|
||||
created at 2021-08-27 10:43 +0200
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,143 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
|
||||
<title>Coverage for rover/rover.py: 100%</title>
|
||||
<link rel="icon" sizes="32x32" href="favicon_32.png">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.hotkeys.js"></script>
|
||||
<script type="text/javascript" src="jquery.isonscreen.js"></script>
|
||||
<script type="text/javascript" src="coverage_html.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(coverage.pyfile_ready);
|
||||
</script>
|
||||
</head>
|
||||
<body class="pyfile">
|
||||
<div id="header">
|
||||
<div class="content">
|
||||
<h1>Coverage for <b>rover/rover.py</b> :
|
||||
<span class="pc_cov">100%</span>
|
||||
</h1>
|
||||
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
|
||||
<h2 class="stats">
|
||||
55 statements
|
||||
<button type="button" class="run shortkey_r button_toggle_run" title="Toggle lines run">55 run</button>
|
||||
<button type="button" class="mis show_mis shortkey_m button_toggle_mis" title="Toggle lines missing">0 missing</button>
|
||||
<button type="button" class="exc show_exc shortkey_x button_toggle_exc" title="Toggle lines excluded">0 excluded</button>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="help_panel">
|
||||
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
|
||||
<p class="legend">Hot-keys on this page</p>
|
||||
<div>
|
||||
<p class="keyhelp">
|
||||
<span class="key">r</span>
|
||||
<span class="key">m</span>
|
||||
<span class="key">x</span>
|
||||
<span class="key">p</span> toggle line displays
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">j</span>
|
||||
<span class="key">k</span> next/prev highlighted chunk
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">0</span> (zero) top of page
|
||||
</p>
|
||||
<p class="keyhelp">
|
||||
<span class="key">1</span> (one) first highlighted chunk
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="source">
|
||||
<p id="t1" class="run"><span class="n"><a href="#t1">1</a></span><span class="t"><span class="key">from</span> <span class="nam">dataclasses</span> <span class="key">import</span> <span class="nam">dataclass</span><span class="op">,</span> <span class="nam">field</span> </span><span class="r"></span></p>
|
||||
<p id="t2" class="run"><span class="n"><a href="#t2">2</a></span><span class="t"><span class="key">from</span> <span class="nam">typing</span> <span class="key">import</span> <span class="nam">Tuple</span> </span><span class="r"></span></p>
|
||||
<p id="t3" class="pln"><span class="n"><a href="#t3">3</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t4" class="pln"><span class="n"><a href="#t4">4</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t5" class="run"><span class="n"><a href="#t5">5</a></span><span class="t"><span class="op">@</span><span class="nam">dataclass</span><span class="op">(</span><span class="nam">frozen</span><span class="op">=</span><span class="key">True</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t6" class="run"><span class="n"><a href="#t6">6</a></span><span class="t"><span class="key">class</span> <span class="nam">Coordinates</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t7" class="run"><span class="n"><a href="#t7">7</a></span><span class="t"> <span class="nam">x</span><span class="op">:</span> <span class="nam">int</span> </span><span class="r"></span></p>
|
||||
<p id="t8" class="run"><span class="n"><a href="#t8">8</a></span><span class="t"> <span class="nam">y</span><span class="op">:</span> <span class="nam">int</span> </span><span class="r"></span></p>
|
||||
<p id="t9" class="run"><span class="n"><a href="#t9">9</a></span><span class="t"> <span class="nam">left</span><span class="op">:</span> <span class="nam">str</span> </span><span class="r"></span></p>
|
||||
<p id="t10" class="run"><span class="n"><a href="#t10">10</a></span><span class="t"> <span class="nam">right</span><span class="op">:</span> <span class="nam">str</span> </span><span class="r"></span></p>
|
||||
<p id="t11" class="pln"><span class="n"><a href="#t11">11</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t12" class="pln"><span class="n"><a href="#t12">12</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t13" class="run"><span class="n"><a href="#t13">13</a></span><span class="t"><span class="op">@</span><span class="nam">dataclass</span> </span><span class="r"></span></p>
|
||||
<p id="t14" class="run"><span class="n"><a href="#t14">14</a></span><span class="t"><span class="key">class</span> <span class="nam">Rover</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t15" class="run"><span class="n"><a href="#t15">15</a></span><span class="t"> <span class="nam">x</span><span class="op">:</span> <span class="nam">int</span> </span><span class="r"></span></p>
|
||||
<p id="t16" class="run"><span class="n"><a href="#t16">16</a></span><span class="t"> <span class="nam">y</span><span class="op">:</span> <span class="nam">int</span> </span><span class="r"></span></p>
|
||||
<p id="t17" class="run"><span class="n"><a href="#t17">17</a></span><span class="t"> <span class="nam">direction</span><span class="op">:</span> <span class="nam">str</span> </span><span class="r"></span></p>
|
||||
<p id="t18" class="run"><span class="n"><a href="#t18">18</a></span><span class="t"> <span class="nam">obstacles</span><span class="op">:</span> <span class="nam">list</span><span class="op">[</span><span class="nam">list</span><span class="op">[</span><span class="nam">int</span><span class="op">]</span><span class="op">]</span> <span class="op">=</span> <span class="nam">field</span><span class="op">(</span><span class="nam">default_factory</span><span class="op">=</span><span class="nam">list</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t19" class="pln"><span class="n"><a href="#t19">19</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t20" class="run"><span class="n"><a href="#t20">20</a></span><span class="t"> <span class="nam">valid_commands</span> <span class="op">=</span> <span class="op">(</span><span class="str">"F"</span><span class="op">,</span> <span class="str">"B"</span><span class="op">,</span> <span class="str">"R"</span><span class="op">,</span> <span class="str">"L"</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t21" class="pln"><span class="n"><a href="#t21">21</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t22" class="run"><span class="n"><a href="#t22">22</a></span><span class="t"> <span class="nam">direction_map</span> <span class="op">=</span> <span class="op">{</span> </span><span class="r"></span></p>
|
||||
<p id="t23" class="pln"><span class="n"><a href="#t23">23</a></span><span class="t"> <span class="str">"NORTH"</span><span class="op">:</span> <span class="nam">Coordinates</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="num">1</span><span class="op">,</span> <span class="str">"WEST"</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t24" class="pln"><span class="n"><a href="#t24">24</a></span><span class="t"> <span class="str">"EAST"</span><span class="op">:</span> <span class="nam">Coordinates</span><span class="op">(</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">,</span> <span class="str">"SOUTH"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t25" class="pln"><span class="n"><a href="#t25">25</a></span><span class="t"> <span class="str">"SOUTH"</span><span class="op">:</span> <span class="nam">Coordinates</span><span class="op">(</span><span class="num">0</span><span class="op">,</span> <span class="op">-</span><span class="num">1</span><span class="op">,</span> <span class="str">"EAST"</span><span class="op">,</span> <span class="str">"WEST"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t26" class="pln"><span class="n"><a href="#t26">26</a></span><span class="t"> <span class="str">"WEST"</span><span class="op">:</span> <span class="nam">Coordinates</span><span class="op">(</span><span class="op">-</span><span class="num">1</span><span class="op">,</span> <span class="num">0</span><span class="op">,</span> <span class="str">"SOUTH"</span><span class="op">,</span> <span class="str">"NORTH"</span><span class="op">)</span><span class="op">,</span> </span><span class="r"></span></p>
|
||||
<p id="t27" class="pln"><span class="n"><a href="#t27">27</a></span><span class="t"> <span class="op">}</span> </span><span class="r"></span></p>
|
||||
<p id="t28" class="pln"><span class="n"><a href="#t28">28</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t29" class="run"><span class="n"><a href="#t29">29</a></span><span class="t"> <span class="key">def</span> <span class="nam">is_valid_command</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">command</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="nam">bool</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t30" class="run"><span class="n"><a href="#t30">30</a></span><span class="t"> <span class="key">for</span> <span class="nam">ch</span> <span class="key">in</span> <span class="nam">command</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t31" class="run"><span class="n"><a href="#t31">31</a></span><span class="t"> <span class="key">if</span> <span class="nam">ch</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">valid_commands</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t32" class="run"><span class="n"><a href="#t32">32</a></span><span class="t"> <span class="key">return</span> <span class="key">False</span> </span><span class="r"></span></p>
|
||||
<p id="t33" class="pln"><span class="n"><a href="#t33">33</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t34" class="run"><span class="n"><a href="#t34">34</a></span><span class="t"> <span class="key">return</span> <span class="key">True</span> </span><span class="r"></span></p>
|
||||
<p id="t35" class="pln"><span class="n"><a href="#t35">35</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t36" class="run"><span class="n"><a href="#t36">36</a></span><span class="t"> <span class="key">def</span> <span class="nam">is_obstacle</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">x</span><span class="op">:</span> <span class="nam">int</span><span class="op">,</span> <span class="nam">y</span><span class="op">:</span> <span class="nam">int</span><span class="op">)</span> <span class="op">-></span> <span class="nam">bool</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t37" class="run"><span class="n"><a href="#t37">37</a></span><span class="t"> <span class="key">return</span> <span class="op">[</span><span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">]</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">obstacles</span> </span><span class="r"></span></p>
|
||||
<p id="t38" class="pln"><span class="n"><a href="#t38">38</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t39" class="run"><span class="n"><a href="#t39">39</a></span><span class="t"> <span class="key">def</span> <span class="nam">move</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">command</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t40" class="run"><span class="n"><a href="#t40">40</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">is_valid_command</span><span class="op">(</span><span class="nam">command</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t41" class="run"><span class="n"><a href="#t41">41</a></span><span class="t"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="str">"invalid command. The rover does not move"</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t42" class="pln"><span class="n"><a href="#t42">42</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t43" class="run"><span class="n"><a href="#t43">43</a></span><span class="t"> <span class="key">for</span> <span class="nam">ch</span> <span class="key">in</span> <span class="nam">command</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t44" class="run"><span class="n"><a href="#t44">44</a></span><span class="t"> <span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">,</span> <span class="nam">direction</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_compute_new_coordinates</span><span class="op">(</span><span class="nam">ch</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t45" class="run"><span class="n"><a href="#t45">45</a></span><span class="t"> <span class="key">if</span> <span class="nam">obstacle</span> <span class="op">:=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">is_obstacle</span><span class="op">(</span><span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t46" class="run"><span class="n"><a href="#t46">46</a></span><span class="t"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_new_coordinates_output</span><span class="op">(</span><span class="nam">obstacle</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t47" class="pln"><span class="n"><a href="#t47">47</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t48" class="run"><span class="n"><a href="#t48">48</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_apply_new_coordinates</span><span class="op">(</span><span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">,</span> <span class="nam">direction</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t49" class="pln"><span class="n"><a href="#t49">49</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t50" class="run"><span class="n"><a href="#t50">50</a></span><span class="t"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_new_coordinates_output</span><span class="op">(</span><span class="op">)</span> </span><span class="r"></span></p>
|
||||
<p id="t51" class="pln"><span class="n"><a href="#t51">51</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t52" class="run"><span class="n"><a href="#t52">52</a></span><span class="t"> <span class="key">def</span> <span class="nam">_new_coordinates_output</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">obstacle</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="key">False</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t53" class="run"><span class="n"><a href="#t53">53</a></span><span class="t"> <span class="key">if</span> <span class="nam">obstacle</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t54" class="run"><span class="n"><a href="#t54">54</a></span><span class="t"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">x</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">y</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">,</span> <span class="str">"STOPPED"</span> </span><span class="r"></span></p>
|
||||
<p id="t55" class="run"><span class="n"><a href="#t55">55</a></span><span class="t"> <span class="key">return</span> <span class="nam">self</span><span class="op">.</span><span class="nam">x</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">y</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction</span> </span><span class="r"></span></p>
|
||||
<p id="t56" class="pln"><span class="n"><a href="#t56">56</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t57" class="run"><span class="n"><a href="#t57">57</a></span><span class="t"> <span class="key">def</span> <span class="nam">_compute_new_coordinates</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">command</span><span class="op">)</span> <span class="op">-></span> <span class="nam">Tuple</span><span class="op">[</span><span class="nam">int</span><span class="op">,</span> <span class="nam">int</span><span class="op">,</span> <span class="nam">str</span><span class="op">]</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t58" class="run"><span class="n"><a href="#t58">58</a></span><span class="t"> <span class="nam">x</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">x</span> </span><span class="r"></span></p>
|
||||
<p id="t59" class="run"><span class="n"><a href="#t59">59</a></span><span class="t"> <span class="nam">y</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">y</span> </span><span class="r"></span></p>
|
||||
<p id="t60" class="run"><span class="n"><a href="#t60">60</a></span><span class="t"> <span class="nam">direction</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction</span> </span><span class="r"></span></p>
|
||||
<p id="t61" class="pln"><span class="n"><a href="#t61">61</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t62" class="run"><span class="n"><a href="#t62">62</a></span><span class="t"> <span class="key">if</span> <span class="nam">command</span> <span class="op">==</span> <span class="str">"B"</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t63" class="run"><span class="n"><a href="#t63">63</a></span><span class="t"> <span class="nam">x</span> <span class="op">-=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction_map</span><span class="op">[</span><span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">]</span><span class="op">.</span><span class="nam">x</span> </span><span class="r"></span></p>
|
||||
<p id="t64" class="run"><span class="n"><a href="#t64">64</a></span><span class="t"> <span class="nam">y</span> <span class="op">-=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction_map</span><span class="op">[</span><span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">]</span><span class="op">.</span><span class="nam">y</span> </span><span class="r"></span></p>
|
||||
<p id="t65" class="run"><span class="n"><a href="#t65">65</a></span><span class="t"> <span class="key">if</span> <span class="nam">command</span> <span class="op">==</span> <span class="str">"F"</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t66" class="run"><span class="n"><a href="#t66">66</a></span><span class="t"> <span class="nam">x</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction_map</span><span class="op">[</span><span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">]</span><span class="op">.</span><span class="nam">x</span> </span><span class="r"></span></p>
|
||||
<p id="t67" class="run"><span class="n"><a href="#t67">67</a></span><span class="t"> <span class="nam">y</span> <span class="op">+=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction_map</span><span class="op">[</span><span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">]</span><span class="op">.</span><span class="nam">y</span> </span><span class="r"></span></p>
|
||||
<p id="t68" class="run"><span class="n"><a href="#t68">68</a></span><span class="t"> <span class="key">if</span> <span class="nam">command</span> <span class="op">==</span> <span class="str">"R"</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t69" class="run"><span class="n"><a href="#t69">69</a></span><span class="t"> <span class="nam">direction</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction_map</span><span class="op">[</span><span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">]</span><span class="op">.</span><span class="nam">right</span> </span><span class="r"></span></p>
|
||||
<p id="t70" class="run"><span class="n"><a href="#t70">70</a></span><span class="t"> <span class="key">if</span> <span class="nam">command</span> <span class="op">==</span> <span class="str">"L"</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t71" class="run"><span class="n"><a href="#t71">71</a></span><span class="t"> <span class="nam">direction</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">direction_map</span><span class="op">[</span><span class="nam">self</span><span class="op">.</span><span class="nam">direction</span><span class="op">]</span><span class="op">.</span><span class="nam">left</span> </span><span class="r"></span></p>
|
||||
<p id="t72" class="pln"><span class="n"><a href="#t72">72</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t73" class="run"><span class="n"><a href="#t73">73</a></span><span class="t"> <span class="key">return</span> <span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">,</span> <span class="nam">direction</span> </span><span class="r"></span></p>
|
||||
<p id="t74" class="pln"><span class="n"><a href="#t74">74</a></span><span class="t"> </span><span class="r"></span></p>
|
||||
<p id="t75" class="run"><span class="n"><a href="#t75">75</a></span><span class="t"> <span class="key">def</span> <span class="nam">_apply_new_coordinates</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">x</span><span class="op">,</span> <span class="nam">y</span><span class="op">,</span> <span class="nam">direction</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span> </span><span class="r"></span></p>
|
||||
<p id="t76" class="run"><span class="n"><a href="#t76">76</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">x</span> <span class="op">=</span> <span class="nam">x</span> </span><span class="r"></span></p>
|
||||
<p id="t77" class="run"><span class="n"><a href="#t77">77</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">y</span> <span class="op">=</span> <span class="nam">y</span> </span><span class="r"></span></p>
|
||||
<p id="t78" class="run"><span class="n"><a href="#t78">78</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">direction</span> <span class="op">=</span> <span class="nam">direction</span> </span><span class="r"></span></p>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<p>
|
||||
<a class="nav" href="index.html">« index</a> <a class="nav" href="https://coverage.readthedocs.io/en/6.0b1">coverage.py v6.0b1</a>,
|
||||
created at 2021-08-27 15:09 +0200
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB |
|
|
@ -1,113 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Coverage report</title>
|
||||
<link rel="icon" sizes="32x32" href="favicon_32.png">
|
||||
<link rel="stylesheet" href="style.css" type="text/css">
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.ba-throttle-debounce.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="jquery.hotkeys.js"></script>
|
||||
<script type="text/javascript" src="coverage_html.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(coverage.index_ready);
|
||||
</script>
|
||||
</head>
|
||||
<body class="indexfile">
|
||||
<div id="header">
|
||||
<div class="content">
|
||||
<h1>Coverage report:
|
||||
<span class="pc_cov">100%</span>
|
||||
</h1>
|
||||
<img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
|
||||
<form id="filter_container">
|
||||
<input id="filter" type="text" value="" placeholder="filter..." />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="help_panel">
|
||||
<img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
|
||||
<p class="legend">Hot-keys on this page</p>
|
||||
<div>
|
||||
<p class="keyhelp">
|
||||
<span class="key">n</span>
|
||||
<span class="key">s</span>
|
||||
<span class="key">m</span>
|
||||
<span class="key">x</span>
|
||||
<span class="key">c</span> change column sorting
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="index">
|
||||
<table class="index">
|
||||
<thead>
|
||||
<tr class="tablehead" title="Click to sort">
|
||||
<th class="name left headerSortDown shortkey_n">Module</th>
|
||||
<th class="shortkey_s">statements</th>
|
||||
<th class="shortkey_m">missing</th>
|
||||
<th class="shortkey_x">excluded</th>
|
||||
<th class="right shortkey_c">coverage</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr class="total">
|
||||
<td class="name left">Total</td>
|
||||
<td>83</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td class="right" data-ratio="83 83">100%</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr class="file">
|
||||
<td class="name left"><a href="d_bf1a7b34124815c2___init___py.html">rover/__init__.py</a></td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td class="right" data-ratio="0 0">100%</td>
|
||||
</tr>
|
||||
<tr class="file">
|
||||
<td class="name left"><a href="d_bf1a7b34124815c2_rover_py.html">rover/rover.py</a></td>
|
||||
<td>55</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td class="right" data-ratio="55 55">100%</td>
|
||||
</tr>
|
||||
<tr class="file">
|
||||
<td class="name left"><a href="d_a44f0ac069e85531___init___py.html">tests/__init__.py</a></td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td class="right" data-ratio="0 0">100%</td>
|
||||
</tr>
|
||||
<tr class="file">
|
||||
<td class="name left"><a href="d_a44f0ac069e85531_conftest_py.html">tests/conftest.py</a></td>
|
||||
<td>5</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td class="right" data-ratio="5 5">100%</td>
|
||||
</tr>
|
||||
<tr class="file">
|
||||
<td class="name left"><a href="d_a44f0ac069e85531_test_rover_py.html">tests/test_rover.py</a></td>
|
||||
<td>23</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td class="right" data-ratio="23 23">100%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p id="no_rows">
|
||||
No items found using the specified filter.
|
||||
</p>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div class="content">
|
||||
<p>
|
||||
<a class="nav" href="https://coverage.readthedocs.io/en/6.0b1">coverage.py v6.0b1</a>,
|
||||
created at 2021-08-27 15:09 +0200
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
9
htmlcov/jquery.ba-throttle-debounce.min.js
vendored
9
htmlcov/jquery.ba-throttle-debounce.min.js
vendored
|
|
@ -1,9 +0,0 @@
|
|||
/*
|
||||
* jQuery throttle / debounce - v1.1 - 3/7/2010
|
||||
* http://benalman.com/projects/jquery-throttle-debounce-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
/*
|
||||
* jQuery Hotkeys Plugin
|
||||
* Copyright 2010, John Resig
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
*
|
||||
* Based upon the plugin by Tzury Bar Yochay:
|
||||
* http://github.com/tzuryby/hotkeys
|
||||
*
|
||||
* Original idea by:
|
||||
* Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
|
||||
*/
|
||||
|
||||
(function(jQuery){
|
||||
|
||||
jQuery.hotkeys = {
|
||||
version: "0.8",
|
||||
|
||||
specialKeys: {
|
||||
8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
|
||||
20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
|
||||
37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
|
||||
96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
|
||||
104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
|
||||
112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
|
||||
120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta"
|
||||
},
|
||||
|
||||
shiftNums: {
|
||||
"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
|
||||
"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
|
||||
".": ">", "/": "?", "\\": "|"
|
||||
}
|
||||
};
|
||||
|
||||
function keyHandler( handleObj ) {
|
||||
// Only care when a possible input has been specified
|
||||
if ( typeof handleObj.data !== "string" ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var origHandler = handleObj.handler,
|
||||
keys = handleObj.data.toLowerCase().split(" ");
|
||||
|
||||
handleObj.handler = function( event ) {
|
||||
// Don't fire in text-accepting inputs that we didn't directly bind to
|
||||
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
|
||||
event.target.type === "text") ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Keypress represents characters, not special keys
|
||||
var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
|
||||
character = String.fromCharCode( event.which ).toLowerCase(),
|
||||
key, modif = "", possible = {};
|
||||
|
||||
// check combinations (alt|ctrl|shift+anything)
|
||||
if ( event.altKey && special !== "alt" ) {
|
||||
modif += "alt+";
|
||||
}
|
||||
|
||||
if ( event.ctrlKey && special !== "ctrl" ) {
|
||||
modif += "ctrl+";
|
||||
}
|
||||
|
||||
// TODO: Need to make sure this works consistently across platforms
|
||||
if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
|
||||
modif += "meta+";
|
||||
}
|
||||
|
||||
if ( event.shiftKey && special !== "shift" ) {
|
||||
modif += "shift+";
|
||||
}
|
||||
|
||||
if ( special ) {
|
||||
possible[ modif + special ] = true;
|
||||
|
||||
} else {
|
||||
possible[ modif + character ] = true;
|
||||
possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
|
||||
|
||||
// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
|
||||
if ( modif === "shift+" ) {
|
||||
possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
|
||||
}
|
||||
}
|
||||
|
||||
for ( var i = 0, l = keys.length; i < l; i++ ) {
|
||||
if ( possible[ keys[i] ] ) {
|
||||
return origHandler.apply( this, arguments );
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
jQuery.each([ "keydown", "keyup", "keypress" ], function() {
|
||||
jQuery.event.special[ this ] = { add: keyHandler };
|
||||
});
|
||||
|
||||
})( jQuery );
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
/* Copyright (c) 2010
|
||||
* @author Laurence Wheway
|
||||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
||||
*
|
||||
* @version 1.2.0
|
||||
*/
|
||||
(function($) {
|
||||
jQuery.extend({
|
||||
isOnScreen: function(box, container) {
|
||||
//ensure numbers come in as intgers (not strings) and remove 'px' is it's there
|
||||
for(var i in box){box[i] = parseFloat(box[i])};
|
||||
for(var i in container){container[i] = parseFloat(container[i])};
|
||||
|
||||
if(!container){
|
||||
container = {
|
||||
left: $(window).scrollLeft(),
|
||||
top: $(window).scrollTop(),
|
||||
width: $(window).width(),
|
||||
height: $(window).height()
|
||||
}
|
||||
}
|
||||
|
||||
if( box.left+box.width-container.left > 0 &&
|
||||
box.left < container.width+container.left &&
|
||||
box.top+box.height-container.top > 0 &&
|
||||
box.top < container.height+container.top
|
||||
) return true;
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
jQuery.fn.isOnScreen = function (container) {
|
||||
for(var i in container){container[i] = parseFloat(container[i])};
|
||||
|
||||
if(!container){
|
||||
container = {
|
||||
left: $(window).scrollLeft(),
|
||||
top: $(window).scrollTop(),
|
||||
width: $(window).width(),
|
||||
height: $(window).height()
|
||||
}
|
||||
}
|
||||
|
||||
if( $(this).offset().left+$(this).width()-container.left > 0 &&
|
||||
$(this).offset().left < container.width+container.left &&
|
||||
$(this).offset().top+$(this).height()-container.top > 0 &&
|
||||
$(this).offset().top < container.height+container.top
|
||||
) return true;
|
||||
return false;
|
||||
}
|
||||
})(jQuery);
|
||||
4
htmlcov/jquery.min.js
vendored
4
htmlcov/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
2
htmlcov/jquery.tablesorter.min.js
vendored
2
htmlcov/jquery.tablesorter.min.js
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 8.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.8 KiB |
|
|
@ -1 +0,0 @@
|
|||
{"format":2,"version":"6.0b1","globals":"9bd57ebde26eb2f4bf8646481dbf1d3b","files":{"d_bf1a7b34124815c2___init___py":{"hash":"3c77fc9ef7f887ac2508d4109cf92472","index":{"nums":[0,1,0,0,0,0,0,0],"html_filename":"d_bf1a7b34124815c2___init___py.html","relative_filename":"rover/__init__.py"}},"d_a44f0ac069e85531___init___py":{"hash":"3c77fc9ef7f887ac2508d4109cf92472","index":{"nums":[0,1,0,0,0,0,0,0],"html_filename":"d_a44f0ac069e85531___init___py.html","relative_filename":"tests/__init__.py"}},"d_a44f0ac069e85531_test_rover_py":{"hash":"56847e16289e9409f1589e7acd9df071","index":{"nums":[0,1,23,0,0,0,0,0],"html_filename":"d_a44f0ac069e85531_test_rover_py.html","relative_filename":"tests/test_rover.py"}},"d_bf1a7b34124815c2_rover_py":{"hash":"8c147885437640f233a8415d41aa413a","index":{"nums":[0,1,55,0,0,0,0,0],"html_filename":"d_bf1a7b34124815c2_rover_py.html","relative_filename":"rover/rover.py"}},"d_a44f0ac069e85531_conftest_py":{"hash":"131dc5829333225ffeda75380140e18e","index":{"nums":[0,1,5,0,0,0,0,0],"html_filename":"d_a44f0ac069e85531_conftest_py.html","relative_filename":"tests/conftest.py"}}}}
|
||||
|
|
@ -1,291 +0,0 @@
|
|||
@charset "UTF-8";
|
||||
/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */
|
||||
/* For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt */
|
||||
/* Don't edit this .css file. Edit the .scss file instead! */
|
||||
html, body, h1, h2, h3, p, table, td, th { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; }
|
||||
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1em; background: #fff; color: #000; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { body { background: #1e1e1e; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { body { color: #eee; } }
|
||||
|
||||
html > body { font-size: 16px; }
|
||||
|
||||
a:active, a:focus { outline: 2px dashed #007acc; }
|
||||
|
||||
p { font-size: .875em; line-height: 1.4em; }
|
||||
|
||||
table { border-collapse: collapse; }
|
||||
|
||||
td { vertical-align: top; }
|
||||
|
||||
table tr.hidden { display: none !important; }
|
||||
|
||||
p#no_rows { display: none; font-size: 1.2em; }
|
||||
|
||||
a.nav { text-decoration: none; color: inherit; }
|
||||
|
||||
a.nav:hover { text-decoration: underline; color: inherit; }
|
||||
|
||||
#header { background: #f8f8f8; width: 100%; border-bottom: 1px solid #eee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #header { background: black; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #header { border-color: #333; } }
|
||||
|
||||
.indexfile #footer { margin: 1rem 3.5rem; }
|
||||
|
||||
.pyfile #footer { margin: 1rem 1rem; }
|
||||
|
||||
#footer .content { padding: 0; color: #666; font-style: italic; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #footer .content { color: #aaa; } }
|
||||
|
||||
#index { margin: 1rem 0 0 3.5rem; }
|
||||
|
||||
#header .content { padding: 1rem 3.5rem; }
|
||||
|
||||
h1 { font-size: 1.25em; display: inline-block; }
|
||||
|
||||
#filter_container { float: right; margin: 0 2em 0 0; }
|
||||
|
||||
#filter_container input { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #filter_container input { border-color: #444; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #filter_container input { background: #1e1e1e; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #filter_container input { color: #eee; } }
|
||||
|
||||
#filter_container input:focus { border-color: #007acc; }
|
||||
|
||||
h2.stats { margin-top: .5em; font-size: 1em; }
|
||||
|
||||
.stats button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; color: inherit; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button { border-color: #444; } }
|
||||
|
||||
.stats button:active, .stats button:focus { outline: 2px dashed #007acc; }
|
||||
|
||||
.stats button:active, .stats button:focus { outline: 2px dashed #007acc; }
|
||||
|
||||
.stats button.run { background: #eeffee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.run { background: #373d29; } }
|
||||
|
||||
.stats button.run.show_run { background: #dfd; border: 2px solid #00dd00; margin: 0 .1em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.run.show_run { background: #373d29; } }
|
||||
|
||||
.stats button.mis { background: #ffeeee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.mis { background: #4b1818; } }
|
||||
|
||||
.stats button.mis.show_mis { background: #fdd; border: 2px solid #ff0000; margin: 0 .1em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.mis.show_mis { background: #4b1818; } }
|
||||
|
||||
.stats button.exc { background: #f7f7f7; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.exc { background: #333; } }
|
||||
|
||||
.stats button.exc.show_exc { background: #eee; border: 2px solid #808080; margin: 0 .1em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.exc.show_exc { background: #333; } }
|
||||
|
||||
.stats button.par { background: #ffffd5; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.par { background: #650; } }
|
||||
|
||||
.stats button.par.show_par { background: #ffa; border: 2px solid #dddd00; margin: 0 .1em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { .stats button.par.show_par { background: #650; } }
|
||||
|
||||
.help_panel, #source p .annotate.long { display: none; position: absolute; z-index: 999; background: #ffffcc; border: 1px solid #888; border-radius: .2em; color: #333; padding: .25em .5em; }
|
||||
|
||||
#source p .annotate.long { white-space: normal; float: right; top: 1.75em; right: 1em; height: auto; }
|
||||
|
||||
#keyboard_icon { float: right; margin: 5px; cursor: pointer; }
|
||||
|
||||
.help_panel { padding: .75em; border: 1px solid #883; }
|
||||
|
||||
.help_panel .legend { font-style: italic; margin-bottom: 1em; }
|
||||
|
||||
.indexfile .help_panel { width: 25em; }
|
||||
|
||||
.pyfile .help_panel { width: 18em; }
|
||||
|
||||
#panel_icon { float: right; cursor: pointer; }
|
||||
|
||||
.keyhelp { margin-top: .75em; }
|
||||
|
||||
.keyhelp .key { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em .35em; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-weight: bold; background: #eee; }
|
||||
|
||||
#source { padding: 1em 0 1em 3.5rem; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
|
||||
|
||||
#source p { position: relative; white-space: pre; }
|
||||
|
||||
#source p * { box-sizing: border-box; }
|
||||
|
||||
#source p .n { float: left; text-align: right; width: 3.5rem; box-sizing: border-box; margin-left: -3.5rem; padding-right: 1em; color: #999; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .n { color: #777; } }
|
||||
|
||||
#source p .n a { text-decoration: none; color: #999; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .n a { color: #777; } }
|
||||
|
||||
#source p .n a:hover { text-decoration: underline; color: #999; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .n a:hover { color: #777; } }
|
||||
|
||||
#source p.highlight .n { background: #ffdd00; }
|
||||
|
||||
#source p .t { display: inline-block; width: 100%; box-sizing: border-box; margin-left: -.5em; padding-left: 0.3em; border-left: 0.2em solid #fff; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .t { border-color: #1e1e1e; } }
|
||||
|
||||
#source p .t:hover { background: #f2f2f2; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .t:hover { background: #282828; } }
|
||||
|
||||
#source p .t:hover ~ .r .annotate.long { display: block; }
|
||||
|
||||
#source p .t .com { color: #008000; font-style: italic; line-height: 1px; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .t .com { color: #6A9955; } }
|
||||
|
||||
#source p .t .key { font-weight: bold; line-height: 1px; }
|
||||
|
||||
#source p .t .str { color: #0451A5; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .t .str { color: #9CDCFE; } }
|
||||
|
||||
#source p.mis .t { border-left: 0.2em solid #ff0000; }
|
||||
|
||||
#source p.mis.show_mis .t { background: #fdd; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t { background: #4b1818; } }
|
||||
|
||||
#source p.mis.show_mis .t:hover { background: #f2d2d2; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t:hover { background: #532323; } }
|
||||
|
||||
#source p.run .t { border-left: 0.2em solid #00dd00; }
|
||||
|
||||
#source p.run.show_run .t { background: #dfd; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.run.show_run .t { background: #373d29; } }
|
||||
|
||||
#source p.run.show_run .t:hover { background: #d2f2d2; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.run.show_run .t:hover { background: #404633; } }
|
||||
|
||||
#source p.exc .t { border-left: 0.2em solid #808080; }
|
||||
|
||||
#source p.exc.show_exc .t { background: #eee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t { background: #333; } }
|
||||
|
||||
#source p.exc.show_exc .t:hover { background: #e2e2e2; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t:hover { background: #3c3c3c; } }
|
||||
|
||||
#source p.par .t { border-left: 0.2em solid #dddd00; }
|
||||
|
||||
#source p.par.show_par .t { background: #ffa; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.par.show_par .t { background: #650; } }
|
||||
|
||||
#source p.par.show_par .t:hover { background: #f2f2a2; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p.par.show_par .t:hover { background: #6d5d0c; } }
|
||||
|
||||
#source p .r { position: absolute; top: 0; right: 2.5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; }
|
||||
|
||||
#source p .annotate { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; color: #666; padding-right: .5em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .annotate { color: #ddd; } }
|
||||
|
||||
#source p .annotate.short:hover ~ .long { display: block; }
|
||||
|
||||
#source p .annotate.long { width: 30em; right: 2.5em; }
|
||||
|
||||
#source p input { display: none; }
|
||||
|
||||
#source p input ~ .r label.ctx { cursor: pointer; border-radius: .25em; }
|
||||
|
||||
#source p input ~ .r label.ctx::before { content: "▶ "; }
|
||||
|
||||
#source p input ~ .r label.ctx:hover { background: #d5f7ff; color: #666; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { background: #0f3a42; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { color: #aaa; } }
|
||||
|
||||
#source p input:checked ~ .r label.ctx { background: #aef; color: #666; border-radius: .75em .75em 0 0; padding: 0 .5em; margin: -.25em 0; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { background: #056; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { color: #aaa; } }
|
||||
|
||||
#source p input:checked ~ .r label.ctx::before { content: "▼ "; }
|
||||
|
||||
#source p input:checked ~ .ctxs { padding: .25em .5em; overflow-y: scroll; max-height: 10.5em; }
|
||||
|
||||
#source p label.ctx { color: #999; display: inline-block; padding: 0 .5em; font-size: .8333em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p label.ctx { color: #777; } }
|
||||
|
||||
#source p .ctxs { display: block; max-height: 0; overflow-y: hidden; transition: all .2s; padding: 0 .5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; white-space: nowrap; background: #aef; border-radius: .25em; margin-right: 1.75em; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #source p .ctxs { background: #056; } }
|
||||
|
||||
#source p .ctxs span { display: block; text-align: right; }
|
||||
|
||||
#index { font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.875em; }
|
||||
|
||||
#index table.index { margin-left: -.5em; }
|
||||
|
||||
#index td, #index th { text-align: right; width: 5em; padding: .25em .5em; border-bottom: 1px solid #eee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #index td, #index th { border-color: #333; } }
|
||||
|
||||
#index td.name, #index th.name { text-align: left; width: auto; }
|
||||
|
||||
#index th { font-style: italic; color: #333; cursor: pointer; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #index th { color: #ddd; } }
|
||||
|
||||
#index th:hover { background: #eee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #index th:hover { background: #333; } }
|
||||
|
||||
#index th.headerSortDown, #index th.headerSortUp { white-space: nowrap; background: #eee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #index th.headerSortDown, #index th.headerSortUp { background: #333; } }
|
||||
|
||||
#index th.headerSortDown:after { content: " ↑"; }
|
||||
|
||||
#index th.headerSortUp:after { content: " ↓"; }
|
||||
|
||||
#index td.name a { text-decoration: none; color: inherit; }
|
||||
|
||||
#index tr.total td, #index tr.total_dynamic td { font-weight: bold; border-top: 1px solid #ccc; border-bottom: none; }
|
||||
|
||||
#index tr.file:hover { background: #eee; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #index tr.file:hover { background: #333; } }
|
||||
|
||||
#index tr.file:hover td.name { text-decoration: underline; color: inherit; }
|
||||
|
||||
#scroll_marker { position: fixed; right: 0; top: 0; width: 16px; height: 100%; background: #fff; border-left: 1px solid #eee; will-change: transform; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #scroll_marker { background: #1e1e1e; } }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #scroll_marker { border-color: #333; } }
|
||||
|
||||
#scroll_marker .marker { background: #ccc; position: absolute; min-height: 3px; width: 100%; }
|
||||
|
||||
@media (prefers-color-scheme: dark) { #scroll_marker .marker { background: #444; } }
|
||||
Loading…
Reference in a new issue