mirror of
https://github.com/evennia/evennia.git
synced 2026-03-29 20:17:16 +02:00
783 lines
No EOL
127 KiB
HTML
783 lines
No EOL
127 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>evennia.contrib.crafting.tests — Evennia 1.0-dev documentation</title>
|
|
<link rel="stylesheet" href="../../../../_static/nature.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
|
|
<script id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
|
|
<script src="../../../../_static/jquery.js"></script>
|
|
<script src="../../../../_static/underscore.js"></script>
|
|
<script src="../../../../_static/doctools.js"></script>
|
|
<script src="../../../../_static/language_data.js"></script>
|
|
<link rel="shortcut icon" href="../../../../_static/favicon.ico"/>
|
|
<link rel="index" title="Index" href="../../../../genindex.html" />
|
|
<link rel="search" title="Search" href="../../../../search.html" />
|
|
</head><body>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../../genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../../index.html">Evennia 1.0-dev</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../../evennia.html" accesskey="U">evennia</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.contrib.crafting.tests</a></li>
|
|
</ul>
|
|
<div class="develop">develop branch</div>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia.contrib.crafting.tests</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">Unit tests for the crafting system contrib.</span>
|
|
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">unittest</span> <span class="kn">import</span> <span class="n">mock</span>
|
|
<span class="kn">from</span> <span class="nn">anything</span> <span class="kn">import</span> <span class="n">Something</span>
|
|
<span class="kn">from</span> <span class="nn">django.test</span> <span class="kn">import</span> <span class="n">override_settings</span>
|
|
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ObjectDoesNotExist</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.commands.default.tests</span> <span class="kn">import</span> <span class="n">CommandTest</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils.test_resources</span> <span class="kn">import</span> <span class="n">TestCase</span><span class="p">,</span> <span class="n">EvenniaTest</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils.create</span> <span class="kn">import</span> <span class="n">create_object</span>
|
|
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">crafting</span><span class="p">,</span> <span class="n">example_recipes</span>
|
|
|
|
|
|
<div class="viewcode-block" id="TestCraftUtils"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftUtils">[docs]</a><span class="k">class</span> <span class="nc">TestCraftUtils</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Test helper utils for crafting.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">maxDiff</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<div class="viewcode-block" id="TestCraftUtils.test_load_recipes"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftUtils.test_load_recipes">[docs]</a> <span class="nd">@override_settings</span><span class="p">(</span><span class="n">CRAFT_RECIPE_MODULES</span><span class="o">=</span><span class="p">[])</span>
|
|
<span class="k">def</span> <span class="nf">test_load_recipes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""This should only load the example module now"""</span>
|
|
|
|
<span class="n">crafting</span><span class="o">.</span><span class="n">_load_recipes</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
|
<span class="n">crafting</span><span class="o">.</span><span class="n">_RECIPE_CLASSES</span><span class="p">,</span>
|
|
<span class="p">{</span>
|
|
<span class="s2">"crucible steel"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">CrucibleSteelRecipe</span><span class="p">,</span>
|
|
<span class="s2">"leather"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">LeatherRecipe</span><span class="p">,</span>
|
|
<span class="s2">"oak bark"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">OakBarkRecipe</span><span class="p">,</span>
|
|
<span class="s2">"pig iron"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">PigIronRecipe</span><span class="p">,</span>
|
|
<span class="s2">"rawhide"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">RawhideRecipe</span><span class="p">,</span>
|
|
<span class="s2">"sword"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">SwordRecipe</span><span class="p">,</span>
|
|
<span class="s2">"sword blade"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">SwordBladeRecipe</span><span class="p">,</span>
|
|
<span class="s2">"sword guard"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">SwordGuardRecipe</span><span class="p">,</span>
|
|
<span class="s2">"sword handle"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">SwordHandleRecipe</span><span class="p">,</span>
|
|
<span class="s2">"sword pommel"</span><span class="p">:</span> <span class="n">example_recipes</span><span class="o">.</span><span class="n">SwordPommelRecipe</span><span class="p">,</span>
|
|
<span class="p">},</span>
|
|
<span class="p">)</span></div></div>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">_TestMaterial</span><span class="p">:</span>
|
|
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
|
|
|
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
|
|
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase">[docs]</a><span class="k">class</span> <span class="nc">TestCraftingRecipeBase</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Test the parent recipe class.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase.setUp"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">inp1</span> <span class="o">=</span> <span class="n">_TestMaterial</span><span class="p">(</span><span class="s2">"test1"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">inp2</span> <span class="o">=</span> <span class="n">_TestMaterial</span><span class="p">(</span><span class="s2">"test2"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">inp3</span> <span class="o">=</span> <span class="n">_TestMaterial</span><span class="p">(</span><span class="s2">"test3"</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"kw1"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"kw2"</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span> <span class="o">=</span> <span class="n">crafting</span><span class="o">.</span><span class="n">CraftingRecipeBase</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inp1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inp2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inp3</span><span class="p">,</span> <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span>
|
|
<span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase.test_msg"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase.test_msg">[docs]</a> <span class="k">def</span> <span class="nf">test_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test messaging to crafter"""</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"message"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span><span class="s2">"message"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">})</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase.test_pre_craft"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase.test_pre_craft">[docs]</a> <span class="k">def</span> <span class="nf">test_pre_craft</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test validating hook"""</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">pre_craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">validated_inputs</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">inp1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inp2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">inp3</span><span class="p">))</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase.test_pre_craft_fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase.test_pre_craft_fail">[docs]</a> <span class="k">def</span> <span class="nf">test_pre_craft_fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Should rase error if validation fails"""</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">allow_craft</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">assertRaises</span><span class="p">(</span><span class="n">crafting</span><span class="o">.</span><span class="n">CraftingValidationError</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">pre_craft</span><span class="p">()</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase.test_craft_hook__succeed"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase.test_craft_hook__succeed">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_hook__succeed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test craft hook, the main access method."""</span>
|
|
|
|
<span class="n">expected_result</span> <span class="o">=</span> <span class="n">_TestMaterial</span><span class="p">(</span><span class="s2">"test_result"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">do_craft</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="n">expected_result</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">allow_craft</span><span class="p">)</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
|
|
<span class="c1"># check result</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">expected_result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">do_craft</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span><span class="n">kw1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">kw2</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
|
|
|
<span class="c1"># since allow_reuse is False, this usage should now be turned off</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">allow_craft</span><span class="p">)</span>
|
|
<span class="c1"># trying to re-run again should fail since rerun is False</span>
|
|
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">assertRaises</span><span class="p">(</span><span class="n">crafting</span><span class="o">.</span><span class="n">CraftingError</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipeBase.test_craft_hook__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipeBase.test_craft_hook__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_hook__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test failing the call"""</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">do_craft</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
|
|
<span class="c1"># trigger exception</span>
|
|
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">assertRaises</span><span class="p">(</span><span class="n">crafting</span><span class="o">.</span><span class="n">CraftingError</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">(</span><span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># reset and try again without exception</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">allow_craft</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">_MockRecipe</span><span class="p">(</span><span class="n">crafting</span><span class="o">.</span><span class="n">CraftingRecipe</span><span class="p">):</span>
|
|
<span class="n">name</span> <span class="o">=</span> <span class="s2">"testrecipe"</span>
|
|
<span class="n">tool_tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"tool1"</span><span class="p">,</span> <span class="s2">"tool2"</span><span class="p">]</span>
|
|
<span class="n">consumable_tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"cons1"</span><span class="p">,</span> <span class="s2">"cons2"</span><span class="p">,</span> <span class="s2">"cons3"</span><span class="p">]</span>
|
|
<span class="n">output_prototypes</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="p">{</span>
|
|
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Result1"</span><span class="p">,</span>
|
|
<span class="s2">"prototype_key"</span><span class="p">:</span> <span class="s2">"resultprot"</span><span class="p">,</span>
|
|
<span class="s2">"tags"</span><span class="p">:</span> <span class="p">[(</span><span class="s2">"result1"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span>
|
|
<span class="p">}</span>
|
|
<span class="p">]</span>
|
|
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe">[docs]</a><span class="nd">@override_settings</span><span class="p">(</span><span class="n">CRAFT_RECIPE_MODULES</span><span class="o">=</span><span class="p">[])</span>
|
|
<span class="k">class</span> <span class="nc">TestCraftingRecipe</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Test the CraftingRecipe class with one recipe</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">maxDiff</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.setUp"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">tool1</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"tool1"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"tool1"</span><span class="p">,</span> <span class="s2">"crafting_tool"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">tool2</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"tool2"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"tool2"</span><span class="p">,</span> <span class="s2">"crafting_tool"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cons1</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"cons1"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"cons1"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cons2</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"cons2"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"cons2"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cons3</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"cons3"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"cons3"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.tearDown"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span>
|
|
<span class="k">pass</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_error_format"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_error_format">[docs]</a> <span class="k">def</span> <span class="nf">test_error_format</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test the automatic error formatter """</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{missing}</span><span class="s2">,</span><span class="si">{tools}</span><span class="s2">,</span><span class="si">{consumables}</span><span class="s2">,</span><span class="si">{inputs}</span><span class="s2">,</span><span class="si">{outputs}</span><span class="s2">"</span> <span class="s2">"</span><span class="si">{i0}</span><span class="s2">,</span><span class="si">{i1}</span><span class="s2">,</span><span class="si">{o0}</span><span class="s2">"</span>
|
|
<span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="s2">"missing"</span><span class="p">:</span> <span class="s2">"foo"</span><span class="p">,</span>
|
|
<span class="s2">"tools"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"bar"</span><span class="p">,</span> <span class="s2">"bar2"</span><span class="p">,</span> <span class="s2">"bar3"</span><span class="p">],</span>
|
|
<span class="s2">"consumables"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"cons1"</span><span class="p">,</span> <span class="s2">"cons2"</span><span class="p">],</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">expected</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="s2">"missing"</span><span class="p">:</span> <span class="s2">"foo"</span><span class="p">,</span>
|
|
<span class="s2">"i0"</span><span class="p">:</span> <span class="s2">"cons1"</span><span class="p">,</span>
|
|
<span class="s2">"i1"</span><span class="p">:</span> <span class="s2">"cons2"</span><span class="p">,</span>
|
|
<span class="s2">"i2"</span><span class="p">:</span> <span class="s2">"cons3"</span><span class="p">,</span>
|
|
<span class="s2">"o0"</span><span class="p">:</span> <span class="s2">"Result1"</span><span class="p">,</span>
|
|
<span class="s2">"tools"</span><span class="p">:</span> <span class="s2">"bar, bar2 and bar3"</span><span class="p">,</span>
|
|
<span class="s2">"consumables"</span><span class="p">:</span> <span class="s2">"cons1 and cons2"</span><span class="p">,</span>
|
|
<span class="s2">"inputs"</span><span class="p">:</span> <span class="s2">"cons1, cons2 and cons3"</span><span class="p">,</span>
|
|
<span class="s2">"outputs"</span><span class="p">:</span> <span class="s2">"Result1"</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">_format_message</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">expected</span><span class="p">))</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft__success"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft__success">[docs]</a> <span class="k">def</span> <span class="nf">test_craft__success</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test to create a result from the recipe"""</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="s2">"Result1"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(),</span> <span class="p">[</span><span class="s2">"result1"</span><span class="p">,</span> <span class="s2">"resultprot"</span><span class="p">])</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">success_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">),</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">}</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are gone</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_seed__succcess"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_seed__succcess">[docs]</a> <span class="k">def</span> <span class="nf">test_seed__succcess</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Test seed helper classmethod"""</span>
|
|
|
|
<span class="c1"># needed for other dbs to pass seed</span>
|
|
<span class="n">homeroom</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"HomeRoom"</span><span class="p">,</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># call classmethod directly</span>
|
|
<span class="k">with</span> <span class="n">override_settings</span><span class="p">(</span><span class="n">DEFAULT_HOME</span><span class="o">=</span><span class="sa">f</span><span class="s2">"#</span><span class="si">{</span><span class="n">homeroom</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">"</span><span class="p">):</span>
|
|
<span class="n">tools</span><span class="p">,</span> <span class="n">consumables</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="o">.</span><span class="n">seed</span><span class="p">()</span>
|
|
|
|
<span class="c1"># this should be a normal successful crafting</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="o">*</span><span class="p">(</span><span class="n">tools</span> <span class="o">+</span> <span class="n">consumables</span><span class="p">))</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="s2">"Result1"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(),</span> <span class="p">[</span><span class="s2">"result1"</span><span class="p">,</span> <span class="s2">"resultprot"</span><span class="p">])</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">success_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">),</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">}</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are gone</span>
|
|
<span class="k">for</span> <span class="n">cons</span> <span class="ow">in</span> <span class="n">consumables</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">cons</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="k">for</span> <span class="n">tool</span> <span class="ow">in</span> <span class="n">tools</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">tool</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_missing_tool__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_missing_tool__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_missing_tool__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Fail craft by missing tool2"""</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_tool_missing_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="s2">"tool2"</span><span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_missing_cons__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_missing_cons__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_missing_cons__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Fail craft by missing cons3"""</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_consumable_missing_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="s2">"cons3"</span><span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_missing_cons__always_consume__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_missing_cons__always_consume__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_missing_cons__always_consume__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Fail craft by missing cons3, with always-consume flag"""</span>
|
|
|
|
<span class="n">cons4</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"cons4"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"cons4"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="n">cons4</span><span class="p">)</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">consume_on_fail</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_consumable_missing_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="s2">"cons3"</span><span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are deleted even though we failed</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># the extra should also be gone</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">cons4</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># but cons3 should be fine since it was not included</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain as normal</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_wrong_tool__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_wrong_tool__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_wrong_tool__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Fail craft by including a wrong tool"""</span>
|
|
|
|
<span class="n">wrong</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"wrong"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"wrongtool"</span><span class="p">,</span> <span class="s2">"crafting_tool"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="n">wrong</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_tool_excess_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">excess</span><span class="o">=</span><span class="n">wrong</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_tool_excess__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_tool_excess__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_tool_excess__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Fail by too many consumables"""</span>
|
|
|
|
<span class="c1"># note that this is a valid tag!</span>
|
|
<span class="n">tool3</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"tool3"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"tool2"</span><span class="p">,</span> <span class="s2">"crafting_tool"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">,</span> <span class="n">tool3</span>
|
|
<span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_tool_excess_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">excess</span><span class="o">=</span><span class="n">tool3</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">tool3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_cons_excess__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_cons_excess__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_cons_excess__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Fail by too many consumables"""</span>
|
|
|
|
<span class="c1"># note that this is a valid tag!</span>
|
|
<span class="n">cons4</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"cons4"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"cons3"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">,</span> <span class="n">cons4</span>
|
|
<span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_consumable_excess_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">excess</span><span class="o">=</span><span class="n">cons4</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">cons4</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_tool_excess__sucess"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_tool_excess__sucess">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_tool_excess__sucess</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Allow too many consumables"""</span>
|
|
|
|
<span class="n">tool3</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"tool3"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"tool2"</span><span class="p">,</span> <span class="s2">"crafting_tool"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">,</span> <span class="n">tool3</span>
|
|
<span class="p">)</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">exact_tools</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">success_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">),</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">}</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are gone</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_cons_excess__sucess"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_cons_excess__sucess">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_cons_excess__sucess</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Allow too many consumables"""</span>
|
|
|
|
<span class="n">cons4</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"cons4"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">"cons3"</span><span class="p">,</span> <span class="s2">"crafting_material"</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">,</span> <span class="n">cons4</span>
|
|
<span class="p">)</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">exact_consumables</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">success_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">),</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">}</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are gone</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_tool_order__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_tool_order__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_tool_order__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Strict tool-order recipe fail """</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span>
|
|
<span class="p">)</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">exact_tool_order</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_tool_order_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_cons_order__fail"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftingRecipe.test_craft_cons_order__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_cons_order__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Strict tool-order recipe fail """</span>
|
|
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span>
|
|
<span class="p">)</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">exact_consumable_order</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">recipe</span><span class="o">.</span><span class="n">craft</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
|
<span class="n">recipe</span><span class="o">.</span><span class="n">error_consumable_order_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">)</span>
|
|
<span class="p">),</span>
|
|
<span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"crafting"</span><span class="p">},</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># make sure consumables are still there</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="c1"># make sure tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="TestCraftSword"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftSword">[docs]</a><span class="k">class</span> <span class="nc">TestCraftSword</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Test the `craft` function by crafting the example sword.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<div class="viewcode-block" id="TestCraftSword.setUp"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftSword.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftSword.test_craft_sword"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftSword.test_craft_sword">[docs]</a> <span class="nd">@override_settings</span><span class="p">(</span><span class="n">CRAFT_RECIPE_MODULES</span><span class="o">=</span><span class="p">[],</span> <span class="n">DEFAULT_HOME</span><span class="o">=</span><span class="s2">"#999999"</span><span class="p">)</span>
|
|
<span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.contrib.crafting.example_recipes.random"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">test_craft_sword</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mockrandom</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Craft example sword. For the test, every crafting works.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># make sure every craft succeeds</span>
|
|
<span class="n">mockrandom</span><span class="o">.</span><span class="n">random</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_co</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">tagkey</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
<span class="n">tagcat</span> <span class="o">=</span> <span class="s2">"crafting_tool"</span> <span class="k">if</span> <span class="n">is_tool</span> <span class="k">else</span> <span class="s2">"crafting_material"</span>
|
|
<span class="k">return</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="n">tagkey</span><span class="p">,</span> <span class="n">tagcat</span><span class="p">)],</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_craft</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">):</span>
|
|
<span class="sd">"""shortcut to shorten and return only one element"""</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">crafting</span><span class="o">.</span><span class="n">craft</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="n">recipe_name</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">result</span>
|
|
|
|
<span class="c1"># generate base materials</span>
|
|
<span class="n">iron_ore1</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Iron ore ingot"</span><span class="p">,</span> <span class="s2">"iron ore"</span><span class="p">)</span>
|
|
<span class="n">iron_ore2</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Iron ore ingot"</span><span class="p">,</span> <span class="s2">"iron ore"</span><span class="p">)</span>
|
|
<span class="n">iron_ore3</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Iron ore ingot"</span><span class="p">,</span> <span class="s2">"iron ore"</span><span class="p">)</span>
|
|
|
|
<span class="n">ash1</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of Ash"</span><span class="p">,</span> <span class="s2">"ash"</span><span class="p">)</span>
|
|
<span class="n">ash2</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of Ash"</span><span class="p">,</span> <span class="s2">"ash"</span><span class="p">)</span>
|
|
<span class="n">ash3</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of Ash"</span><span class="p">,</span> <span class="s2">"ash"</span><span class="p">)</span>
|
|
|
|
<span class="n">sand1</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of sand"</span><span class="p">,</span> <span class="s2">"sand"</span><span class="p">)</span>
|
|
<span class="n">sand2</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of sand"</span><span class="p">,</span> <span class="s2">"sand"</span><span class="p">)</span>
|
|
<span class="n">sand3</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of sand"</span><span class="p">,</span> <span class="s2">"sand"</span><span class="p">)</span>
|
|
|
|
<span class="n">coal01</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal02</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal03</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal04</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal05</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal06</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal07</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal08</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal09</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal10</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal11</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
<span class="n">coal12</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of coal"</span><span class="p">,</span> <span class="s2">"coal"</span><span class="p">)</span>
|
|
|
|
<span class="n">oak_wood</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Pile of oak wood"</span><span class="p">,</span> <span class="s2">"oak wood"</span><span class="p">)</span>
|
|
<span class="n">water</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Bucket of water"</span><span class="p">,</span> <span class="s2">"water"</span><span class="p">)</span>
|
|
<span class="n">fur</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Bundle of Animal fur"</span><span class="p">,</span> <span class="s2">"fur"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># tools</span>
|
|
<span class="n">blast_furnace</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Blast furnace"</span><span class="p">,</span> <span class="s2">"blast furnace"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">furnace</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Smithing furnace"</span><span class="p">,</span> <span class="s2">"furnace"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">crucible</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Smelting crucible"</span><span class="p">,</span> <span class="s2">"crucible"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">anvil</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Smithing anvil"</span><span class="p">,</span> <span class="s2">"anvil"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">hammer</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Smithing hammer"</span><span class="p">,</span> <span class="s2">"hammer"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">knife</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Working knife"</span><span class="p">,</span> <span class="s2">"knife"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">cauldron</span> <span class="o">=</span> <span class="n">_co</span><span class="p">(</span><span class="s2">"Cauldron"</span><span class="p">,</span> <span class="s2">"cauldron"</span><span class="p">,</span> <span class="n">is_tool</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># making pig iron</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">iron_ore1</span><span class="p">,</span> <span class="n">coal01</span><span class="p">,</span> <span class="n">coal02</span><span class="p">,</span> <span class="n">blast_furnace</span><span class="p">]</span>
|
|
<span class="n">pig_iron1</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"pig iron"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">iron_ore2</span><span class="p">,</span> <span class="n">coal03</span><span class="p">,</span> <span class="n">coal04</span><span class="p">,</span> <span class="n">blast_furnace</span><span class="p">]</span>
|
|
<span class="n">pig_iron2</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"pig iron"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">iron_ore3</span><span class="p">,</span> <span class="n">coal05</span><span class="p">,</span> <span class="n">coal06</span><span class="p">,</span> <span class="n">blast_furnace</span><span class="p">]</span>
|
|
<span class="n">pig_iron3</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"pig iron"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># making crucible steel</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">pig_iron1</span><span class="p">,</span> <span class="n">ash1</span><span class="p">,</span> <span class="n">sand1</span><span class="p">,</span> <span class="n">coal07</span><span class="p">,</span> <span class="n">coal08</span><span class="p">,</span> <span class="n">crucible</span><span class="p">]</span>
|
|
<span class="n">crucible_steel1</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"crucible steel"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">pig_iron2</span><span class="p">,</span> <span class="n">ash2</span><span class="p">,</span> <span class="n">sand2</span><span class="p">,</span> <span class="n">coal09</span><span class="p">,</span> <span class="n">coal10</span><span class="p">,</span> <span class="n">crucible</span><span class="p">]</span>
|
|
<span class="n">crucible_steel2</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"crucible steel"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">pig_iron3</span><span class="p">,</span> <span class="n">ash3</span><span class="p">,</span> <span class="n">sand3</span><span class="p">,</span> <span class="n">coal11</span><span class="p">,</span> <span class="n">coal12</span><span class="p">,</span> <span class="n">crucible</span><span class="p">]</span>
|
|
<span class="n">crucible_steel3</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"crucible steel"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># smithing</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">crucible_steel1</span><span class="p">,</span> <span class="n">hammer</span><span class="p">,</span> <span class="n">anvil</span><span class="p">,</span> <span class="n">furnace</span><span class="p">]</span>
|
|
<span class="n">sword_blade</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"sword blade"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">crucible_steel2</span><span class="p">,</span> <span class="n">hammer</span><span class="p">,</span> <span class="n">anvil</span><span class="p">,</span> <span class="n">furnace</span><span class="p">]</span>
|
|
<span class="n">sword_pommel</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"sword pommel"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">crucible_steel3</span><span class="p">,</span> <span class="n">hammer</span><span class="p">,</span> <span class="n">anvil</span><span class="p">,</span> <span class="n">furnace</span><span class="p">]</span>
|
|
<span class="n">sword_guard</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"sword guard"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># stripping fur</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">fur</span><span class="p">,</span> <span class="n">knife</span><span class="p">]</span>
|
|
<span class="n">rawhide</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"rawhide"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># making bark (tannin) and cleaned wood</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">oak_wood</span><span class="p">,</span> <span class="n">knife</span><span class="p">]</span>
|
|
<span class="n">oak_bark</span><span class="p">,</span> <span class="n">cleaned_oak_wood</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"oak bark"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># leathermaking</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">rawhide</span><span class="p">,</span> <span class="n">oak_bark</span><span class="p">,</span> <span class="n">water</span><span class="p">,</span> <span class="n">cauldron</span><span class="p">]</span>
|
|
<span class="n">leather</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"leather"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># sword handle</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="n">cleaned_oak_wood</span><span class="p">,</span> <span class="n">knife</span><span class="p">]</span>
|
|
<span class="n">sword_handle</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"sword handle"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># sword (order matters)</span>
|
|
<span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="n">sword_blade</span><span class="p">,</span>
|
|
<span class="n">sword_guard</span><span class="p">,</span>
|
|
<span class="n">sword_pommel</span><span class="p">,</span>
|
|
<span class="n">sword_handle</span><span class="p">,</span>
|
|
<span class="n">leather</span><span class="p">,</span>
|
|
<span class="n">knife</span><span class="p">,</span>
|
|
<span class="n">hammer</span><span class="p">,</span>
|
|
<span class="n">furnace</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
<span class="n">sword</span> <span class="o">=</span> <span class="n">_craft</span><span class="p">(</span><span class="s2">"sword"</span><span class="p">,</span> <span class="o">*</span><span class="n">inputs</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">sword</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="s2">"Sword"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># make sure all materials and intermediaries are deleted</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">iron_ore1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">iron_ore2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">iron_ore3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">ash1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">ash2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">ash3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sand1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sand2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sand3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal01</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal02</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal03</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal04</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal05</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal06</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal07</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal08</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal09</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal10</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal11</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">coal12</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">oak_wood</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">water</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">fur</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">pig_iron1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">pig_iron2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">pig_iron3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">crucible_steel1</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">crucible_steel2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">crucible_steel3</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sword_blade</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sword_pommel</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sword_guard</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">rawhide</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">oak_bark</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">leather</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">sword_handle</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
|
|
|
<span class="c1"># make sure all tools remain</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">blast_furnace</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">furnace</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">crucible</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">anvil</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">hammer</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">knife</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="n">cauldron</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="TestCraftCommand"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftCommand">[docs]</a><span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.contrib.crafting.crafting._load_recipes"</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">())</span>
|
|
<span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.contrib.crafting.crafting._RECIPE_CLASSES"</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="p">{</span><span class="s2">"testrecipe"</span><span class="p">:</span> <span class="n">_MockRecipe</span><span class="p">})</span>
|
|
<span class="nd">@override_settings</span><span class="p">(</span><span class="n">CRAFT_RECIPE_MODULES</span><span class="o">=</span><span class="p">[],</span> <span class="n">DEFAULT_HOME</span><span class="o">=</span><span class="s2">"#999999"</span><span class="p">)</span>
|
|
<span class="k">class</span> <span class="nc">TestCraftCommand</span><span class="p">(</span><span class="n">CommandTest</span><span class="p">):</span>
|
|
<span class="sd">"""Test the crafting command"""</span>
|
|
|
|
<div class="viewcode-block" id="TestCraftCommand.setUp"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftCommand.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
|
|
|
|
<span class="n">tools</span><span class="p">,</span> <span class="n">consumables</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span>
|
|
<span class="n">tool_kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"location"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">},</span> <span class="n">consumable_kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"location"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">}</span>
|
|
<span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftCommand.test_craft__success"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftCommand.test_craft__success">[docs]</a> <span class="k">def</span> <span class="nf">test_craft__success</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="s2">"Successfully craft using command"</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
|
<span class="n">crafting</span><span class="o">.</span><span class="n">CmdCraft</span><span class="p">(),</span>
|
|
<span class="s2">"testrecipe from cons1, cons2, cons3 using tool1, tool2"</span><span class="p">,</span>
|
|
<span class="n">_MockRecipe</span><span class="o">.</span><span class="n">success_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">),</span>
|
|
<span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftCommand.test_craft__notools__failure"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftCommand.test_craft__notools__failure">[docs]</a> <span class="k">def</span> <span class="nf">test_craft__notools__failure</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="s2">"Craft fail no tools"</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
|
<span class="n">crafting</span><span class="o">.</span><span class="n">CmdCraft</span><span class="p">(),</span>
|
|
<span class="s2">"testrecipe from cons1, cons2, cons3"</span><span class="p">,</span>
|
|
<span class="n">_MockRecipe</span><span class="o">.</span><span class="n">error_tool_missing_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="s2">"tool1"</span><span class="p">),</span>
|
|
<span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TestCraftCommand.test_craft__nocons__failure"><a class="viewcode-back" href="../../../../api/evennia.contrib.crafting.tests.html#evennia.contrib.crafting.tests.TestCraftCommand.test_craft__nocons__failure">[docs]</a> <span class="k">def</span> <span class="nf">test_craft__nocons__failure</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
|
<span class="n">crafting</span><span class="o">.</span><span class="n">CmdCraft</span><span class="p">(),</span>
|
|
<span class="s2">"testrecipe using tool1, tool2"</span><span class="p">,</span>
|
|
<span class="n">_MockRecipe</span><span class="o">.</span><span class="n">error_consumable_missing_message</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputs</span><span class="o">=</span><span class="s2">"Result1"</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="s2">"cons1"</span><span class="p">),</span>
|
|
<span class="p">)</span></div></div>
|
|
</pre></div>
|
|
|
|
<div class="clearer"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../../../../index.html">
|
|
<img class="logo" src="../../../../_static/evennia_logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3 id="searchlabel">Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../../../search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script>$('#searchbox').show(0);</script>
|
|
<h3>Versions</h3>
|
|
<ul>
|
|
<li><a href="tests.html">1.0-dev (develop branch)</a></li>
|
|
<li><a href="../../../../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../../index.html">Evennia 1.0-dev</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../../evennia.html" >evennia</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.contrib.crafting.tests</a></li>
|
|
</ul>
|
|
<div class="develop">develop branch</div>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2020, The Evennia developer community.
|
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
|
</div>
|
|
</body>
|
|
</html> |