Added examples, improved recipe implementation
This commit is contained in:
parent
922d9f09dd
commit
04f357fc0a
32
examples/bases.php
Normal file
32
examples/bases.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once __DIR__."/../vendor/autoload.php";
|
||||||
|
|
||||||
|
use NoccyLabs\Juicer\Ingredient\Base;
|
||||||
|
use NoccyLabs\Juicer\Ingredient\NicotineBase;
|
||||||
|
|
||||||
|
printf("Apparent Specific Gravity of base mixes:\n\n");
|
||||||
|
printf(" VG | PG | ASG\n");
|
||||||
|
printf(" ------|------|------------------------\n");
|
||||||
|
for ($pg = 0; $pg < 100; $pg += 10) {
|
||||||
|
$base = new Base("PG{$pg}");
|
||||||
|
printf(" %3d%% | %3d%% | %.4fg/mL\n", 100-$pg, $pg, $base->getSpecificGravity());
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "\n\n";
|
||||||
|
|
||||||
|
$asgstrength = [ 24, 20, 18, 15 ];
|
||||||
|
$asgheader = join("", array_map(function ($s) { return sprintf("%2dmg ", $s); } , $asgstrength));
|
||||||
|
|
||||||
|
printf("Apparent Specific Gravity of nicotine bases:\n\n");
|
||||||
|
printf(" VG | PG | %s\n", $asgheader);
|
||||||
|
printf(" ------|------|-------------------------------------\n");
|
||||||
|
for ($pg = 0; $pg < 100; $pg += 10) {
|
||||||
|
printf(" %3d%% | %3d%% |", 100-$pg, $pg);
|
||||||
|
$base = new Base("PG{$pg}");
|
||||||
|
foreach($asgstrength as $s) {
|
||||||
|
$nicbase = new NicotineBase($base, $s);
|
||||||
|
printf(" %6.4f ", $nicbase->getSpecificGravity());
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
@ -24,39 +24,59 @@ class Recipe implements RecipeInterface
|
|||||||
/** @var IngredientInterface[] */
|
/** @var IngredientInterface[] */
|
||||||
protected $ingredients = [];
|
protected $ingredients = [];
|
||||||
|
|
||||||
public function setRecipeName(?string $name)
|
public function setRecipeName(?string $name): Recipe
|
||||||
{
|
{
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setRecipeAuthor(?string $author)
|
public function setRecipeAuthor(?string $author): Recipe
|
||||||
{
|
{
|
||||||
$this->author = $author;
|
$this->author = $author;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setTags(array $tags)
|
public function setTags(array $tags): Recipe
|
||||||
{
|
{
|
||||||
$this->tags = $tags;
|
$this->tags = $tags;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addTag(string $tag)
|
public function addTag(string $tag): Recipe
|
||||||
{
|
{
|
||||||
$this->tags[] = $tag;
|
$this->tags[] = $tag;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDescription(?string $description)
|
public function hasTag(string $tag): bool
|
||||||
|
{
|
||||||
|
return in_array($tag, $this->tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeTag(string $tag): Recipe
|
||||||
|
{
|
||||||
|
$this->tags = array_filter($this->tags, function ($input) use ($tag) {
|
||||||
|
return $input != $tag;
|
||||||
|
});
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDescription(?string $description): Recipe
|
||||||
{
|
{
|
||||||
$this->description = $description;
|
$this->description = $description;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addIngredient(IngredientInterface $ingredient)
|
public function addIngredient(IngredientInterface $ingredient): Recipe
|
||||||
{
|
{
|
||||||
$this->ingredients[] = $ingredient;
|
$this->ingredients[] = $ingredient;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setExtra(array $extra)
|
public function setExtra(array $extra): Recipe
|
||||||
{
|
{
|
||||||
$this->extra = $extra;
|
$this->extra = $extra;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,4 +25,33 @@ class RecipeTest extends \PhpUnit\Framework\TestCase
|
|||||||
$this->assertEquals([$ingredient1, $ingredient2], $recipe->getIngredients());
|
$this->assertEquals([$ingredient1, $ingredient2], $recipe->getIngredients());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testManipulatingRecipeTags()
|
||||||
|
{
|
||||||
|
$recipe = new Recipe();
|
||||||
|
|
||||||
|
$recipe
|
||||||
|
->addTag("foo")
|
||||||
|
->addTag("bar");
|
||||||
|
|
||||||
|
$this->assertCount(2, $recipe->getTags());
|
||||||
|
$this->assertTrue($recipe->hasTag("foo"));
|
||||||
|
$this->assertTrue($recipe->hasTag("bar"));
|
||||||
|
$recipe->removeTag("foo");
|
||||||
|
$this->assertCount(1, $recipe->getTags());
|
||||||
|
$this->assertTrue($recipe->hasTag("bar"));
|
||||||
|
|
||||||
|
$recipe->addTag("baz");
|
||||||
|
$this->assertCount(2, $recipe->getTags());
|
||||||
|
$this->assertFalse($recipe->hasTag("foo"));
|
||||||
|
$this->assertTrue($recipe->hasTag("bar"));
|
||||||
|
$this->assertTrue($recipe->hasTag("baz"));
|
||||||
|
|
||||||
|
$recipe->setTags(["baz"]);
|
||||||
|
$this->assertCount(1, $recipe->getTags());
|
||||||
|
$this->assertFalse($recipe->hasTag("foo"));
|
||||||
|
$this->assertFalse($recipe->hasTag("bar"));
|
||||||
|
$this->assertTrue($recipe->hasTag("baz"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user