Polish final version

master
Peter Babič 8 years ago
parent c0e4ce671d
commit 39b4a307f9
Signed by: peter.babic
GPG Key ID: 4BB075BC1884BA40
  1. 23
      .idea/coffeetable.iml
  2. 141
      .idea/workspace.xml
  3. 12
      composer.lock
  4. 11
      index.php
  5. 16
      src/Coffee/Spot.php
  6. 26
      src/Coffee/Table.php
  7. 6
      src/Coffee/Tile.php

@ -4,7 +4,6 @@
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/vendor" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
@ -35,6 +34,18 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library name="PHARS">
<CLASSES>
<root url="phar://$MODULE_DIR$/vendor/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar/" />
<root url="phar://$MODULE_DIR$/vendor_/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar/" />
</CLASSES>
<SOURCES>
<root url="phar://$MODULE_DIR$/vendor/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar/" />
<root url="phar://$MODULE_DIR$/vendor_/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar/" />
</SOURCES>
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="PHP">
<CLASSES>
@ -97,15 +108,5 @@
</SOURCES>
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="PHARS">
<CLASSES>
<root url="phar://$MODULE_DIR$/vendor/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar/" />
</CLASSES>
<SOURCES>
<root url="phar://$MODULE_DIR$/vendor/symfony/dependency-injection/Tests/Fixtures/includes/ProjectWithXsdExtensionInPhar.phar/" />
</SOURCES>
</library>
</orderEntry>
</component>
</module>

@ -5,8 +5,13 @@
</component>
<component name="ChangeListManager">
<list default="true" id="65f95bb6-3a86-4ed6-841e-441936291ad4" name="Default" comment="Present final version functionality">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/coffeetable.iml" afterPath="$PROJECT_DIR$/.idea/coffeetable.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/composer.lock" afterPath="$PROJECT_DIR$/composer.lock" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/index.php" afterPath="$PROJECT_DIR$/index.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Coffee/Spot.php" afterPath="$PROJECT_DIR$/src/Coffee/Spot.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Coffee/Table.php" afterPath="$PROJECT_DIR$/src/Coffee/Table.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Coffee/Tile.php" afterPath="$PROJECT_DIR$/src/Coffee/Tile.php" />
</list>
<ignored path="coffeetable.iws" />
<ignored path=".idea/workspace.xml" />
@ -35,8 +40,8 @@
<file leaf-file-name="index.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/index.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="433">
<caret line="85" column="1" selection-start-line="85" selection-start-column="1" selection-end-line="85" selection-end-column="1" />
<state relative-caret-position="273">
<caret line="67" column="38" selection-start-line="67" selection-start-column="38" selection-end-line="67" selection-end-column="38" />
<folding />
</state>
</provider>
@ -45,8 +50,8 @@
<file leaf-file-name="Table.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/Coffee/Table.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<state relative-caret-position="181">
<caret line="103" column="7" selection-start-line="103" selection-start-column="7" selection-end-line="103" selection-end-column="7" />
<folding />
</state>
</provider>
@ -55,7 +60,7 @@
<file leaf-file-name="Stack.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Coffee/Stack.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<state relative-caret-position="334">
<caret line="25" column="32" selection-start-line="25" selection-start-column="32" selection-end-line="25" selection-end-column="32" />
<folding />
</state>
@ -75,8 +80,8 @@
<file leaf-file-name="Spot.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Coffee/Spot.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="468">
<caret line="31" column="0" selection-start-line="31" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
<state relative-caret-position="-177">
<caret line="38" column="26" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="26" />
<folding />
</state>
</provider>
@ -92,6 +97,16 @@
</provider>
</entry>
</file>
<file leaf-file-name="Tile.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Coffee/Tile.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-375">
<caret line="66" column="0" selection-start-line="66" selection-start-column="0" selection-end-line="66" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FrameworkCommandLineHistory">
@ -147,14 +162,14 @@
<option value="$PROJECT_DIR$/src/Coffee/Position.php" />
<option value="$PROJECT_DIR$/src/Coffee/Map.php" />
<option value="$PROJECT_DIR$/tests/Coffee/TileTest.php" />
<option value="$PROJECT_DIR$/src/Coffee/Tile.php" />
<option value="$PROJECT_DIR$/src/Coffee/Spot.php" />
<option value="$PROJECT_DIR$/tests/Coffee/QueueTest.php" />
<option value="$PROJECT_DIR$/src/Coffee/Queue.php" />
<option value="$PROJECT_DIR$/tests/Coffee/StackTest.php" />
<option value="$PROJECT_DIR$/src/Coffee/Stack.php" />
<option value="$PROJECT_DIR$/tests/Coffee/TableTest.php" />
<option value="$PROJECT_DIR$/src/Coffee/Spot.php" />
<option value="$PROJECT_DIR$/index.php" />
<option value="$PROJECT_DIR$/src/Coffee/Tile.php" />
<option value="$PROJECT_DIR$/src/Coffee/Table.php" />
</list>
</option>
@ -169,33 +184,33 @@
</component>
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" interpreter_name="PHP">
<include_path>
<path value="$PROJECT_DIR$/vendor/pdepend/pdepend" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
<path value="$PROJECT_DIR$/vendor/symfony/dependency-injection" />
<path value="$PROJECT_DIR$/vendor/symfony/config" />
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" />
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit-mock-objects" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
<path value="$PROJECT_DIR$/vendor/symfony/dependency-injection" />
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
<path value="$PROJECT_DIR$/vendor/symfony/config" />
<path value="$PROJECT_DIR$/vendor/pdepend/pdepend" />
<path value="$PROJECT_DIR$/vendor/phpmd/phpmd" />
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
</include_path>
</component>
<component name="ProjectFrameBounds">
@ -462,14 +477,7 @@
<workItem from="1458671080272" duration="2309000" />
<workItem from="1458673405558" duration="654000" />
<workItem from="1458674128734" duration="1662000" />
<workItem from="1458713666152" duration="17050000" />
</task>
<task id="LOCAL-00005" summary="Split Table and Map to the separate classes for decoupling">
<created>1458150506101</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1458150506101</updated>
<workItem from="1458713666152" duration="19351000" />
</task>
<task id="LOCAL-00006" summary="Introduce index.php and require autoload.php in tests">
<created>1458154532845</created>
@ -807,16 +815,17 @@
<option name="project" value="LOCAL" />
<updated>1458825316172</updated>
</task>
<option name="localTasksCounter" value="54" />
<task id="LOCAL-00054" summary="Present final version functionality">
<created>1458825420827</created>
<option name="number" value="00054" />
<option name="presentableId" value="LOCAL-00054" />
<option name="project" value="LOCAL" />
<updated>1458825420827</updated>
</task>
<option name="localTasksCounter" value="55" />
<servers />
</component>
<component name="TestHistory">
<history-entry file="Tests - 2016.03.24 at 13h 19m 22s.xml">
<configuration name="Tests" configurationId="PHPUnitRunConfigurationType" />
</history-entry>
<history-entry file="Tests - 2016.03.24 at 13h 20m 13s.xml">
<configuration name="Tests" configurationId="PHPUnitRunConfigurationType" />
</history-entry>
<history-entry file="Tests - 2016.03.24 at 13h 22m 51s.xml">
<configuration name="Tests" configurationId="PHPUnitRunConfigurationType" />
</history-entry>
@ -841,9 +850,15 @@
<history-entry file="Tests - 2016.03.24 at 14h 13m 20s.xml">
<configuration name="Tests" configurationId="PHPUnitRunConfigurationType" />
</history-entry>
<history-entry file="Tests - 2016.03.24 at 17h 16m 13s.xml">
<configuration name="Tests" configurationId="PHPUnitRunConfigurationType" />
</history-entry>
<history-entry file="Tests - 2016.03.24 at 17h 23m 58s.xml">
<configuration name="Tests" configurationId="PHPUnitRunConfigurationType" />
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="26217000" />
<option name="totallyTimeSpent" value="28518000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
@ -865,7 +880,7 @@
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917705" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917705" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25561097" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" x="0" y="355" width="1446" height="188" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25561097" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" x="0" y="355" width="1446" height="188" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
@ -937,7 +952,7 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/src/Coffee/Table.php</url>
<line>139</line>
<line>153</line>
<option name="timeStamp" value="74" />
</line-breakpoint>
</breakpoints>
@ -1213,14 +1228,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Coffee/Tile.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="288">
<caret line="38" column="25" selection-start-line="38" selection-start-column="25" selection-end-line="38" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tests/Coffee/TileTest.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
@ -1229,14 +1236,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Coffee/Spot.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="468">
<caret line="31" column="0" selection-start-line="31" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file:///usr/share/nginx/html/coffeetable/tests/Coffee/QueueTest.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="408">
@ -1311,7 +1310,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/src/Coffee/Stack.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<state relative-caret-position="334">
<caret line="25" column="32" selection-start-line="25" selection-start-column="32" selection-end-line="25" selection-end-column="32" />
<folding />
</state>
@ -1319,16 +1318,32 @@
</entry>
<entry file="file://$PROJECT_DIR$/index.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="433">
<caret line="85" column="1" selection-start-line="85" selection-start-column="1" selection-end-line="85" selection-end-column="1" />
<state relative-caret-position="273">
<caret line="67" column="38" selection-start-line="67" selection-start-column="38" selection-end-line="67" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Coffee/Tile.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-375">
<caret line="66" column="0" selection-start-line="66" selection-start-column="0" selection-end-line="66" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Coffee/Spot.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-177">
<caret line="38" column="26" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Coffee/Table.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<state relative-caret-position="181">
<caret line="103" column="7" selection-start-line="103" selection-start-column="7" selection-end-line="103" selection-end-column="7" />
<folding />
</state>
</provider>

12
composer.lock generated

@ -637,16 +637,16 @@
},
{
"name": "phpunit/phpunit-mock-objects",
"version": "3.0.6",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "49bc700750196c04dd6bc2c4c99cb632b893836b"
"reference": "7c34c9bdde4131b824086457a3145e27dba10ca1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/49bc700750196c04dd6bc2c4c99cb632b893836b",
"reference": "49bc700750196c04dd6bc2c4c99cb632b893836b",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/7c34c9bdde4131b824086457a3145e27dba10ca1",
"reference": "7c34c9bdde4131b824086457a3145e27dba10ca1",
"shasum": ""
},
"require": {
@ -664,7 +664,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
"dev-master": "3.1.x-dev"
}
},
"autoload": {
@ -689,7 +689,7 @@
"mock",
"xunit"
],
"time": "2015-12-08 08:47:06"
"time": "2016-03-24 05:58:25"
},
{
"name": "sebastian/code-unit-reverse-lookup",

@ -2,6 +2,7 @@
namespace Coffee;
// If 'vendor/' folder does not exist, please run 'composer install'
require __DIR__ . '/vendor/autoload.php';
try {
@ -58,14 +59,14 @@ try {
echo '<tr>' . "\n";
/** @var Tile $tile */
foreach ($tileRow as $tile) {
$spotNumber = 0;
$attribute = '';
if (!is_null($tile->getSpot())) {
$spotNumber = $tile->getSpot()->getNumber();
$attribute = '';
if ($tile->isRepresentingSpot()) {
$attribute = ' class="coffee"';
}
$spotNumber = $tile->getSpot()->getNumber();
echo '<td' . $attribute . '>' . $spotNumber . '</td>' . "\n";
}
echo '</tr>' . "\n";
@ -73,6 +74,7 @@ try {
echo '</table>' . "\n";
echo '</br>' . "\n";
// TODO: introduce i18n/pluralism
echo 'Najväčšia kávová kaluž je s číslom ';
$numbers = '';
$delimiter = ', ';
@ -86,6 +88,7 @@ try {
}
catch (\Exception $e) {
// TODO: provide more information, like the file:line for example
echo '</br>' . "\n";
echo 'Caught exception: ' . $e->getMessage() . "\n";
}

@ -8,11 +8,11 @@
namespace Coffee;
/**
* Class Spot
*
* @package Coffee
*/
/**
* Class Spot
*
* @package Coffee
*/
/**
* Class Spot
*
@ -35,8 +35,10 @@ class Spot {
*
* @param Tile $tile
*/
public function __construct(Tile $tile) {
$this->addTile($tile);
public function __construct(Tile $tile = null) {
if (!is_null($tile)) {
$this->addTile($tile);
}
}
/**

@ -9,16 +9,26 @@ namespace Coffee;
*/
class Table extends Map {
/**
* Since spot numbering starts from 1, 0 is a good candidate
*/
const VOID_SPOT_NUMBER = 0;
/**
* @var Spot[]
*/
private $spots = [];
/**
* @var Spot
* @var Spot|null
*/
private $currentSpot = null;
/**
* @var Spot|null
*/
private $voidSpot = null;
/**
* @var Spot[]
*/
@ -37,6 +47,8 @@ class Table extends Map {
public function __construct($description) {
parent::__construct($description);
$this->voidSpot = new Spot();
$this->voidSpot->setNumber(self::VOID_SPOT_NUMBER);
$this->tileStack = new Stack();
$this->tileStack->push(array_reverse($this->getTiles()));
@ -48,6 +60,7 @@ class Table extends Map {
if ($tile->isRepresentingVoid()) {
$tile->visit();
$this->finishCurrentSpot();
$this->voidSpot->addTile($tile);
continue;
}
@ -87,9 +100,14 @@ class Table extends Map {
/**
* @return Spot[]
* @throws \Exception
*/
public
function getLargestSpots() {
if (empty($this->largestSpots)) {
throw new \Exception('There are no spots in this table.');
}
return $this->largestSpots;
}
@ -97,11 +115,7 @@ class Table extends Map {
* @return Spot
*/
public function getFirstLargestSpot() {
if (empty($this->largestSpots)) {
return null;
}
return $this->largestSpots[0];
return $this->getLargestSpots()[0];
}
/**

@ -64,8 +64,13 @@ class Tile extends Position {
/**
* @return Spot
* @throws \Exception
*/
public function getSpot() {
if (is_null($this->spot)) {
throw new \Exception('This tile does not belong to any spot.');
}
return $this->spot;
}
@ -104,5 +109,4 @@ class Tile extends Position {
return $this->representation == self::REPRESENTS_VOID;
}
}
Loading…
Cancel
Save