From 99906235bd8f8293c90129058ac827a4e827a9e5 Mon Sep 17 00:00:00 2001 From: emily Date: Thu, 26 Aug 2021 13:20:24 +0200 Subject: [PATCH] texttext fixture moved into own executable 'main' module. --- erlang/.gitignore | 1 - erlang/README.md | 11 ++++-- erlang/include/TextTestFixture.hrl | 1 - .../{GildedRose.hrl => gilded_rose.hrl} | 0 erlang/include/texttest_fixture.hrl | 1 + erlang/rebar.config | 4 +-- erlang/src/GildedRose.app.src | 14 -------- erlang/src/gilded_rose.app.src | 1 + .../src/{GildedRose.erl => gilded_rose.erl} | 4 +-- erlang/src/main.erl | 34 +++++++++++++++++++ ...xtTestFixture.erl => texttest_fixture.erl} | 9 ++--- erlang/test/GildedRoseTest.erl | 9 ----- erlang/test/gilded_rose_test.erl | 9 +++++ 13 files changed, 62 insertions(+), 36 deletions(-) delete mode 100644 erlang/include/TextTestFixture.hrl rename erlang/include/{GildedRose.hrl => gilded_rose.hrl} (100%) create mode 100644 erlang/include/texttest_fixture.hrl delete mode 100644 erlang/src/GildedRose.app.src create mode 100644 erlang/src/gilded_rose.app.src rename erlang/src/{GildedRose.erl => gilded_rose.erl} (98%) create mode 100644 erlang/src/main.erl rename erlang/src/{TextTestFixture.erl => texttest_fixture.erl} (76%) delete mode 100644 erlang/test/GildedRoseTest.erl create mode 100644 erlang/test/gilded_rose_test.erl diff --git a/erlang/.gitignore b/erlang/.gitignore index 566e0d74..2a23a830 100644 --- a/erlang/.gitignore +++ b/erlang/.gitignore @@ -16,6 +16,5 @@ _build *.iml rebar3.crashdump *~ -*.iml .idea diff --git a/erlang/README.md b/erlang/README.md index b442c1ce..81744f84 100644 --- a/erlang/README.md +++ b/erlang/README.md @@ -7,7 +7,12 @@ When you open this project with IntelliJ I recommend that you do 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 ----- @@ -21,6 +26,6 @@ Run Tests 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 \ No newline at end of file + $ erl -pa _build/default/lib/gilded_rose/ebin -pa . -eval main:main([30]). -s init stop -noshell diff --git a/erlang/include/TextTestFixture.hrl b/erlang/include/TextTestFixture.hrl deleted file mode 100644 index 84fed9d6..00000000 --- a/erlang/include/TextTestFixture.hrl +++ /dev/null @@ -1 +0,0 @@ --include("GildedRose.hrl"). diff --git a/erlang/include/GildedRose.hrl b/erlang/include/gilded_rose.hrl similarity index 100% rename from erlang/include/GildedRose.hrl rename to erlang/include/gilded_rose.hrl diff --git a/erlang/include/texttest_fixture.hrl b/erlang/include/texttest_fixture.hrl new file mode 100644 index 00000000..6bde4e1f --- /dev/null +++ b/erlang/include/texttest_fixture.hrl @@ -0,0 +1 @@ +-include("gilded_rose.hrl"). diff --git a/erlang/rebar.config b/erlang/rebar.config index f618f3e4..bf4b1d17 100644 --- a/erlang/rebar.config +++ b/erlang/rebar.config @@ -1,2 +1,2 @@ -{erl_opts, [debug_info]}. -{deps, []}. \ No newline at end of file +{erl_opts, [warnings_as_errors]}. +{eunit_opts, [verbose]}. \ No newline at end of file diff --git a/erlang/src/GildedRose.app.src b/erlang/src/GildedRose.app.src deleted file mode 100644 index 57b3c7af..00000000 --- a/erlang/src/GildedRose.app.src +++ /dev/null @@ -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, []} - ]}. diff --git a/erlang/src/gilded_rose.app.src b/erlang/src/gilded_rose.app.src new file mode 100644 index 00000000..4c47019a --- /dev/null +++ b/erlang/src/gilded_rose.app.src @@ -0,0 +1 @@ +{application, gilded_rose, [{vsn, "0.1"}]}. diff --git a/erlang/src/GildedRose.erl b/erlang/src/gilded_rose.erl similarity index 98% rename from erlang/src/GildedRose.erl rename to erlang/src/gilded_rose.erl index 5288065b..68f7efac 100644 --- a/erlang/src/GildedRose.erl +++ b/erlang/src/gilded_rose.erl @@ -1,6 +1,6 @@ --module('GildedRose'). +-module(gilded_rose). --include("GildedRose.hrl"). +-include("gilded_rose.hrl"). -export([ update_quality/1 diff --git a/erlang/src/main.erl b/erlang/src/main.erl new file mode 100644 index 00000000..17f76489 --- /dev/null +++ b/erlang/src/main.erl @@ -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). + diff --git a/erlang/src/TextTestFixture.erl b/erlang/src/texttest_fixture.erl similarity index 76% rename from erlang/src/TextTestFixture.erl rename to erlang/src/texttest_fixture.erl index bdbf510b..30ac0863 100644 --- a/erlang/src/TextTestFixture.erl +++ b/erlang/src/texttest_fixture.erl @@ -1,6 +1,6 @@ --module('TextTestFixture'). +-module(texttest_fixture). --include("GildedRose.hrl"). +-include("texttest_fixture.hrl"). -export([print_update_quality/2]). @@ -15,6 +15,7 @@ print_update_quality(Days, Items) -> io:format("OMGHAI!"), lists:foreach( fun(Day) -> print_one_day(Day, Items), - 'GildedRose':update_quality(Items) - end, lists:seq(0, Days - 1)). + gilded_rose:update_quality(Items) + end, lists:seq(0, Days - 1) + ). diff --git a/erlang/test/GildedRoseTest.erl b/erlang/test/GildedRoseTest.erl deleted file mode 100644 index 83c3e0a8..00000000 --- a/erlang/test/GildedRoseTest.erl +++ /dev/null @@ -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}]))} -]. diff --git a/erlang/test/gilded_rose_test.erl b/erlang/test/gilded_rose_test.erl new file mode 100644 index 00000000..9efd0400 --- /dev/null +++ b/erlang/test/gilded_rose_test.erl @@ -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}]))} +].