texttext fixture moved into own executable 'main' module.

This commit is contained in:
emily 2021-08-26 13:20:24 +02:00
parent 3db5265f46
commit 99906235bd
13 changed files with 62 additions and 36 deletions

1
erlang/.gitignore vendored
View File

@ -16,6 +16,5 @@ _build
*.iml *.iml
rebar3.crashdump rebar3.crashdump
*~ *~
*.iml
.idea .idea

View File

@ -7,7 +7,12 @@ When you open this project with IntelliJ I recommend that you do
File | New | Project from existing sources File | New | Project from existing sources
Then be sure to select "Erlang" as the project type, and configure the rebar3 location correctly. Then be sure to select "Erlang" as the project type, and configure the rebar3 location correctly,
(There is a copy of it in this repo).
If you're having trouble executing the 'main' application, check your module path in your Project Settings.
I found I had to manually set the module compile output path to '_build/default/lib/gilded_rose/ebin'.
The test output path seemed to be correct as '.eunit'
Build Build
----- -----
@ -21,6 +26,6 @@ Run Tests
TextTest Fixture TextTest Fixture
---------------- ----------------
To run for 30 days: To run for 30 days, I think this ought to work but I tend to run it through the IDE instead:
$ update_quality_main.escript 30 $ erl -pa _build/default/lib/gilded_rose/ebin -pa . -eval main:main([30]). -s init stop -noshell

View File

@ -1 +0,0 @@
-include("GildedRose.hrl").

View File

@ -0,0 +1 @@
-include("gilded_rose.hrl").

View File

@ -1,2 +1,2 @@
{erl_opts, [debug_info]}. {erl_opts, [warnings_as_errors]}.
{deps, []}. {eunit_opts, [verbose]}.

View File

@ -1,14 +0,0 @@
{application, 'GildedRose',
[{description, "An OTP library"},
{vsn, "0.1.0"},
{registered, []},
{applications,
[kernel,
stdlib
]},
{env,[]},
{modules, []},
{licenses, ["Apache 2.0"]},
{links, []}
]}.

View File

@ -0,0 +1 @@
{application, gilded_rose, [{vsn, "0.1"}]}.

View File

@ -1,6 +1,6 @@
-module('GildedRose'). -module(gilded_rose).
-include("GildedRose.hrl"). -include("gilded_rose.hrl").
-export([ -export([
update_quality/1 update_quality/1

34
erlang/src/main.erl Normal file
View File

@ -0,0 +1,34 @@
-module(main).
-include("texttest_fixture.hrl").
-export([main/1]).
-define(ALL_ITEMS, [
#item{name = "+5 Dexterity Vest", sell_in = 10, quality = 20},
#item{name = "Aged Brie", sell_in = 2, quality = 0},
#item{name = "Elixir of the Mongoose", sell_in = 5, quality = 7},
#item{name = "Sulfuras, Hand of Ragnaros", sell_in = 0, quality = 80},
#item{name = "Sulfuras, Hand of Ragnaros", sell_in = -1, quality = 80},
#item{name = "Backstage passes to a TAFKAL80ETC concert", sell_in = 15, quality = 20},
#item{name = "Backstage passes to a TAFKAL80ETC concert", sell_in = 10, quality = 49},
#item{name = "Backstage passes to a TAFKAL80ETC concert", sell_in = 5, quality = 49},
#item{name = "Conjured Mana Cake", sell_in = 3, quality = 6}
]).
main([Days]) ->
try
texttest_fixture:print_update_quality(Days, ?ALL_ITEMS)
catch
ExceptionClass:ExceptionInfo ->
io:format("something went wrong:~n~p : ~p~n", [ExceptionClass, ExceptionInfo]),
usage()
end;
main(_) ->
usage().
usage() ->
io:format("usage: main main number_of_days\ne.g. main main [30]\n"),
halt(1).

View File

@ -1,6 +1,6 @@
-module('TextTestFixture'). -module(texttest_fixture).
-include("GildedRose.hrl"). -include("texttest_fixture.hrl").
-export([print_update_quality/2]). -export([print_update_quality/2]).
@ -15,6 +15,7 @@ print_update_quality(Days, Items) ->
io:format("OMGHAI!"), io:format("OMGHAI!"),
lists:foreach( lists:foreach(
fun(Day) -> print_one_day(Day, Items), fun(Day) -> print_one_day(Day, Items),
'GildedRose':update_quality(Items) gilded_rose:update_quality(Items)
end, lists:seq(0, Days - 1)). end, lists:seq(0, Days - 1)
).

View File

@ -1,9 +0,0 @@
-module('GildedRoseTest').
-include_lib("eunit/include/eunit.hrl").
-include("GildedRose.hrl").
update_quality_test_() -> [
{"foo", ?_assertMatch([#item{name= "FixMe"}], 'GildedRose':update_quality([#item{name = "Foo", sell_in = 0, quality = 0}]))}
].

View File

@ -0,0 +1,9 @@
-module(gilded_rose_test).
-include_lib("eunit/include/eunit.hrl").
-include("gilded_rose.hrl").
update_quality_test_() -> [
{"foo", ?_assertMatch([#item{name= "Foo"}], gilded_rose:update_quality([#item{name = "Foo", sell_in = 0, quality = 0}]))}
].