mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-29 12:15:44 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cf40956ae |
@@ -92,7 +92,7 @@ bazel run //src/main/cpp/net/eagle0/shardok:shardok-server --compilation_mode=op
|
||||
bazel test //src/test/... //src/main/go/...
|
||||
|
||||
# Component-specific tests
|
||||
bazel test //src/test/scala/... # Scala Eagle tests
|
||||
bazel test //src/main/scala/... # Scala Eagle tests
|
||||
bazel test //src/test/cpp/... # C++ Shardok tests
|
||||
```
|
||||
|
||||
@@ -111,7 +111,7 @@ bazel run gazelle # Update Go build files
|
||||
2. **If you modified C++ or C# files:** Run `clang-format -i` on the modified files
|
||||
3. **If you modified Scala files:** scalafmt will run automatically via pre-commit hook
|
||||
4. **ALWAYS run the full test suite for your language changes before pushing:**
|
||||
- For Scala changes: `bazel test //src/test/scala/...`
|
||||
- For Scala changes: `bazel test //src/main/scala/...`
|
||||
- For C++ changes: `bazel test //src/test/cpp/...`
|
||||
- This catches exhaustive pattern match errors and other compile-time failures that single-target builds miss
|
||||
|
||||
|
||||
@@ -4,4 +4,4 @@ set -e
|
||||
set -x
|
||||
|
||||
bazel test \
|
||||
//src/test/scala/...
|
||||
//src/main/scala/...
|
||||
|
||||
@@ -221,12 +221,12 @@ Quests completed by specific player actions rather than state checks. Return `fa
|
||||
|
||||
2. Run tests:
|
||||
```bash
|
||||
bazel test //src/test/scala/...
|
||||
bazel test //src/main/scala/...
|
||||
```
|
||||
|
||||
3. Verify proto/Scala parity:
|
||||
```bash
|
||||
bazel test //src/test/scala/net/eagle0/eagle/model/action_result/types:action_result_type_parity_test
|
||||
bazel test //src/main/scala/net/eagle0/eagle/model/action_result/types:action_result_type_parity_test
|
||||
```
|
||||
|
||||
## Current Quest Types (30 total)
|
||||
|
||||
@@ -58,7 +58,7 @@ Based on conversion attempt of `ResolveTruceOfferCommand` (see [PR #4379](https:
|
||||
|
||||
**Before creating any PR:**
|
||||
- ✅ `bazel build //src/main/scala/net/eagle0/eagle:eagle_server` succeeds
|
||||
- ✅ `bazel test //src/test/scala/... --keep_going` passes (or doesn't introduce new failures)
|
||||
- ✅ `bazel test //src/main/scala/... --keep_going` passes (or doesn't introduce new failures)
|
||||
- ✅ All BUILD dependencies are correctly specified
|
||||
- ✅ Scalafmt and other linters pass
|
||||
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "functional_random",
|
||||
srcs = ["FunctionalRandom.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0:__subpackages__",
|
||||
"//src/test/scala/net/eagle0:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0:__subpackages__"],
|
||||
deps = [],
|
||||
)
|
||||
|
||||
@@ -86,3 +83,50 @@ scala_library(
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "functional_random_test",
|
||||
srcs = ["FunctionalRandomTest.scala"],
|
||||
deps = [
|
||||
":functional_random_test_classes",
|
||||
"//src/main/scala/net/eagle0/common:functional_random",
|
||||
],
|
||||
)
|
||||
|
||||
scala_library(
|
||||
name = "functional_random_test_classes",
|
||||
srcs = ["FunctionalRandomTestClasses.scala"],
|
||||
visibility = ["//src/main/scala:__subpackages__"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common:functional_random",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "more_option_test",
|
||||
srcs = ["MoreOptionTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common:more_option",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "more_seq_test",
|
||||
srcs = ["MoreSeqTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common:more_seq",
|
||||
],
|
||||
)
|
||||
|
||||
scala_library(
|
||||
name = "proto_matchers",
|
||||
srcs = ["ProtoMatchers.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0:__subpackages__",
|
||||
],
|
||||
deps = [
|
||||
"@maven//:com_google_protobuf_protobuf_java",
|
||||
"@maven//:com_thesamet_scalapb_scalapb_runtime_3",
|
||||
"@rules_scala//scala/scalatest",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_binary", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_binary", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "api_keys",
|
||||
@@ -154,3 +154,11 @@ scala_library(
|
||||
"//visibility:public",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "open_ai_duration_parser_test",
|
||||
srcs = ["OpenAiDurationParserTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common/llm_integration:open_ai_duration_parser",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_binary", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_binary", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "name_generator",
|
||||
@@ -26,7 +26,7 @@ scala_library(
|
||||
name = "string_construction_parser",
|
||||
srcs = ["StringConstructionParser.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/common/name_generation:__pkg__",
|
||||
"//src/main/scala/net/eagle0/common/name_generation:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
":parse_sequence",
|
||||
@@ -48,7 +48,7 @@ scala_library(
|
||||
name = "string_construction_token",
|
||||
srcs = ["StringConstructionToken.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/common/name_generation:__pkg__",
|
||||
"//src/main/scala/net/eagle0/common/name_generation:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/common:functional_random",
|
||||
@@ -63,7 +63,7 @@ scala_library(
|
||||
srcs = ["StringConstructionTokenGenerator.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/library/util:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:__pkg__",
|
||||
],
|
||||
exports = [":string_construction_token"],
|
||||
deps = [
|
||||
@@ -71,3 +71,22 @@ scala_library(
|
||||
":string_construction_token",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "string_construction_parser_test",
|
||||
srcs = ["StringConstructionParserTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common/name_generation:string_construction_parser",
|
||||
"//src/main/scala/net/eagle0/common/name_generation:string_construction_token",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "string_construction_token_test",
|
||||
srcs = ["StringConstructionTokenTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common:functional_random",
|
||||
"//src/main/scala/net/eagle0/common/name_generation:string_construction_token",
|
||||
"@maven//:org_scalamock_scalamock_3",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "sse_event_reader",
|
||||
@@ -29,3 +29,11 @@ scala_library(
|
||||
"@maven//:com_squareup_okhttp3_okhttp_sse",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "sse_event_reader_test",
|
||||
srcs = ["SseEventReaderTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common/sse:sse_event_reader",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "ai_client",
|
||||
srcs = ["AIClient.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
":ai_client_logger",
|
||||
@@ -41,10 +41,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "ai_client_utils",
|
||||
srcs = ["AIClientUtils.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util/faction_utils",
|
||||
@@ -60,8 +57,8 @@ scala_library(
|
||||
srcs = ["InvitationCommandSelector.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/test/scala/net/eagle0/eagle/service:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/service:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
@@ -87,7 +84,7 @@ scala_library(
|
||||
srcs = ["EarlyGameAIClient.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/service:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/service:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
@@ -107,7 +104,7 @@ scala_library(
|
||||
name = "faction_leader_province_ranker",
|
||||
srcs = ["FactionLeaderProvinceRanker.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
@@ -126,7 +123,7 @@ scala_library(
|
||||
name = "fix_leader_alone_command_selector",
|
||||
srcs = ["FixLeaderAloneCommandSelector.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:command_selection",
|
||||
@@ -148,7 +145,7 @@ scala_library(
|
||||
name = "march_toward_province_command_chooser",
|
||||
srcs = ["MarchTowardProvinceCommandChooser.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
":ai_client_utils",
|
||||
@@ -169,7 +166,7 @@ scala_library(
|
||||
srcs = ["MidGameAIClient.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:command_selection",
|
||||
@@ -222,7 +219,7 @@ scala_library(
|
||||
name = "move_leader_to_better_province_command_chooser",
|
||||
srcs = ["MoveLeaderToBetterProvinceCommandChooser.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
@@ -243,7 +240,7 @@ scala_library(
|
||||
name = "resolve_diplomacy_command_selector",
|
||||
srcs = ["ResolveDiplomacyCommandSelector.scala"],
|
||||
visibility = [
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
@@ -274,10 +271,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "seek_more_leaders_command_chooser",
|
||||
srcs = ["SeekMoreLeadersCommandChooser.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/test/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle/ai:__pkg__"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common:more_option",
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
@@ -298,3 +292,170 @@ scala_library(
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "ai_client_utils_test",
|
||||
srcs = ["AIClientUtilsTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:ai_client_utils",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "faction_leader_province_ranker_test",
|
||||
srcs = ["FactionLeaderProvinceRankerTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:faction_leader_province_ranker",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "fix_leader_alone_command_selector_test",
|
||||
srcs = ["FixLeaderAloneCommandSelectorTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/common:functional_random",
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:fix_leader_alone_command_selector",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/available",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/selected",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "invitation_command_selector_test",
|
||||
srcs = ["InvitationCommandSelectorTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:invitation_command_selector",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:gold_per_hero_held_back",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:min_chance_for_a_i_invite",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:min_support_for_taxes",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:minimum_months_before_repeat_invitation",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:minimum_prestige_difference_to_invite",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:minimum_trust_to_invite",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:prestige_per_supported_province",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:command_selection",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/available",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/common",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/selected",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "mid_game_ai_client_test",
|
||||
srcs = ["MidGameAIClientTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:mid_game_ai_client",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:gold_per_hero_held_back",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:months_recon_considered_recent",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:command_selection",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:army",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:battalion_type",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/battalion",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/battalion/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/available",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/common",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/selected",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/date",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
"//src/main/scala/net/eagle0/eagle/model/view/province:province_view",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "move_leader_to_better_province_command_chooser_test",
|
||||
srcs = ["MoveLeaderToBetterProvinceCommandChooserTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:move_leader_to_better_province_command_chooser",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:gold_per_hero_held_back",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:command_selection",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/available",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/selected",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "resolve_diplomacy_command_selector_test",
|
||||
srcs = ["ResolveDiplomacyCommandSelectorTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:resolve_diplomacy_command_selector",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:ai_alliance_acceptance_base_chance",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:ai_truce_acceptance_base_chance",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:minimum_prestige_difference_to_invite",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:prestige_per_supported_province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "seek_more_leaders_command_chooser_test",
|
||||
srcs = ["SeekMoreLeadersCommandChooserTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/ai:seek_more_leaders_command_chooser",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:ai_minimum_charisma_for_sworn_brother",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:ai_minimum_constitution_for_sworn_brother",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:loyalty_gain_from_feast",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:minimum_loyalty_for_swear_brotherhood",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:command_selection",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/available",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/common",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/selected",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -3,10 +3,7 @@ load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
scala_library(
|
||||
name = "jwt_service",
|
||||
srcs = ["JwtService.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [
|
||||
"@maven//:com_nimbusds_nimbus_jose_jwt",
|
||||
],
|
||||
@@ -15,19 +12,13 @@ scala_library(
|
||||
scala_library(
|
||||
name = "oauth_config",
|
||||
srcs = ["OAuthConfig.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
)
|
||||
|
||||
scala_library(
|
||||
name = "oauth_service",
|
||||
srcs = ["OAuthService.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
exports = [
|
||||
"//src/main/protobuf/net/eagle0/eagle/api:auth_scala_grpc",
|
||||
],
|
||||
@@ -45,10 +36,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "user_service",
|
||||
srcs = ["UserService.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
exports = [
|
||||
"//src/main/protobuf/net/eagle0/eagle/internal:user_scala_proto",
|
||||
"//src/main/scala/net/eagle0/eagle:user_id",
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "client_text",
|
||||
srcs = ["ClientText.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request",
|
||||
@@ -16,10 +13,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "client_text_store",
|
||||
srcs = ["ClientTextStore.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
exports = [
|
||||
":pregenerated_text_store",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request",
|
||||
@@ -36,10 +30,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "client_text_store_impl",
|
||||
srcs = ["ClientTextStoreImpl.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [
|
||||
":client_text",
|
||||
":client_text_store",
|
||||
@@ -60,10 +51,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "text_generation_result",
|
||||
srcs = ["TextGenerationResult.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle/library:eagle_internal_exception",
|
||||
],
|
||||
@@ -72,11 +60,25 @@ scala_library(
|
||||
scala_library(
|
||||
name = "pregenerated_text_store",
|
||||
srcs = ["PregeneratedClientTextStore.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [
|
||||
# "//src/main/scala/net/eagle0/eagle/library:eagle_internal_exception",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "client_text_store_impl_test",
|
||||
srcs = ["ClientTextStoreImplTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/client_text",
|
||||
"//src/main/scala/net/eagle0/eagle/client_text:client_text_store",
|
||||
"//src/main/scala/net/eagle0/eagle/client_text:client_text_store_impl",
|
||||
"//src/main/scala/net/eagle0/eagle/client_text:pregenerated_text_store",
|
||||
"//src/main/scala/net/eagle0/eagle/client_text:text_generation_result",
|
||||
"//src/main/scala/net/eagle0/eagle/library:eagle_internal_exception",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request",
|
||||
"//src/main/scala/net/eagle0/eagle/service/persistence:persister",
|
||||
"@maven//:org_scalamock_scalamock_3",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "engine",
|
||||
srcs = ["Engine.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle/ai:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/service:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/service:__subpackages__",
|
||||
"//src/main/scala/net/eagle0/eagle/service/controller:__pkg__",
|
||||
"//src/test/scala/net/eagle0/eagle/service:__pkg__",
|
||||
"//src/test/scala/net/eagle0/eagle/service/controller:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result:action_result_trait",
|
||||
@@ -33,8 +32,8 @@ scala_library(
|
||||
name = "engine_impl",
|
||||
srcs = ["EngineImpl.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle/library:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/service:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/library:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/library:engine",
|
||||
@@ -82,7 +81,7 @@ scala_library(
|
||||
srcs = ["ActionResultFilter.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/library:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/library:__pkg__",
|
||||
],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/model/view/action_result:action_result_view",
|
||||
@@ -105,29 +104,20 @@ scala_library(
|
||||
scala_library(
|
||||
name = "eagle_client_exception",
|
||||
srcs = ["EagleClientException.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
)
|
||||
|
||||
scala_library(
|
||||
name = "eagle_internal_exception",
|
||||
srcs = ["EagleInternalException.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
deps = [],
|
||||
)
|
||||
|
||||
scala_library(
|
||||
name = "eagle_validation_exception",
|
||||
srcs = ["EagleValidationException.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
exports = [":eagle_internal_exception"],
|
||||
deps = [":eagle_internal_exception"],
|
||||
)
|
||||
@@ -135,10 +125,7 @@ scala_library(
|
||||
scala_library(
|
||||
name = "game_history",
|
||||
srcs = ["GameHistory.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle:__subpackages__",
|
||||
],
|
||||
visibility = ["//src/main/scala/net/eagle0/eagle:__subpackages__"],
|
||||
exports = [
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions/applier:action_result_applier",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/date",
|
||||
@@ -209,3 +196,34 @@ scala_library(
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "engine_impl_test",
|
||||
srcs = ["EngineImplTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/library:eagle_client_exception",
|
||||
"//src/main/scala/net/eagle0/eagle/library:eagle_internal_exception",
|
||||
"//src/main/scala/net/eagle0/eagle/library:engine_impl",
|
||||
"//src/main/scala/net/eagle0/eagle/library:game_history",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util/hero_generator",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:action_result_concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/types",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/command/selected",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/date",
|
||||
"//src/main/scala/net/eagle0/eagle/service:in_memory_history",
|
||||
"//src/main/scala/net/eagle0/eagle/shardok_interface:battle_resolution",
|
||||
"@maven//:com_google_protobuf_protobuf_java",
|
||||
"@maven//:org_scalamock_scalamock_3",
|
||||
],
|
||||
)
|
||||
|
||||
#scala_test(
|
||||
# name = "action_result_filter_test",
|
||||
# srcs = ["ActionResultFilterTest.scala"],
|
||||
# deps = [
|
||||
# # "//src/main/scala/net/eagle0/eagle/library:action_result_filter",
|
||||
# "//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
# ],
|
||||
#)
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library")
|
||||
load("@rules_scala//scala:scala.bzl", "scala_library", "scala_test")
|
||||
|
||||
scala_library(
|
||||
name = "action_result_applier",
|
||||
srcs = ["ActionResultApplier.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/library:__pkg__",
|
||||
"//src/test/scala/net/eagle0/eagle/library/actions:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/service:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/library:__pkg__",
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions:__subpackages__",
|
||||
"//src/main/scala/net/eagle0/eagle/service:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
@@ -146,7 +146,7 @@ scala_library(
|
||||
srcs = ["GameStateExtensions.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/library/actions:__subpackages__",
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions:__subpackages__",
|
||||
],
|
||||
exports = [
|
||||
":game_state_battalion_extensions",
|
||||
@@ -189,7 +189,7 @@ scala_library(
|
||||
srcs = ["ActionResultApplierImpl.scala"],
|
||||
visibility = [
|
||||
"//src/main/scala/net/eagle0/eagle:__subpackages__",
|
||||
"//src/test/scala/net/eagle0/eagle/library/actions:__subpackages__",
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions:__subpackages__",
|
||||
],
|
||||
exports = [
|
||||
":action_result_applier",
|
||||
@@ -205,3 +205,30 @@ scala_library(
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
scala_test(
|
||||
name = "action_result_applier_scala_impl_test",
|
||||
srcs = ["ActionResultApplierImplTest.scala"],
|
||||
deps = [
|
||||
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions/applier:action_result_applier_impl",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:extra_xp_for_stat_bump_over100",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings:xp_for_stat_bump",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result:notification_trait",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:action_result_concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_battalion_concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_faction_concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_hero_concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:notification_concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state:round_phase",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/battalion/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/date",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction:faction_relationship",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/faction/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/game_state",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero/backstory_version",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/hero/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/province/concrete",
|
||||
"//src/main/scala/net/eagle0/eagle/model/state/run_status",
|
||||
],
|
||||
)
|
||||
|
||||
+11
-9
@@ -5,12 +5,12 @@ import net.eagle0.eagle.library.settings.MinVigorForCrackDown
|
||||
import net.eagle0.eagle.model.state.command.available.AvailableCommand.HandleRiotCrackDownAvailable
|
||||
import net.eagle0.eagle.model.state.game_state.GameState
|
||||
import net.eagle0.eagle.model.state.hero.concrete.HeroC
|
||||
import net.eagle0.eagle.model.state.province.ProvinceEvent.ImminentRiotEvent
|
||||
import net.eagle0.eagle.model.state.province.concrete.ProvinceC
|
||||
import org.scalatest.BeforeAndAfterEach
|
||||
import org.scalatest.Inside.inside
|
||||
import net.eagle0.eagle.model.state.province.ProvinceEvent.ImminentRiotEvent
|
||||
import org.scalatest.flatspec.AnyFlatSpec
|
||||
import org.scalatest.matchers.should.Matchers
|
||||
import org.scalatest.BeforeAndAfterEach
|
||||
import org.scalatest.Inside.inside
|
||||
|
||||
class AvailableHandleRiotCrackDownCommandFactoryTest extends AnyFlatSpec with BeforeAndAfterEach with Matchers {
|
||||
private val fid: FactionId = 17
|
||||
@@ -74,10 +74,11 @@ class AvailableHandleRiotCrackDownCommandFactoryTest extends AnyFlatSpec with Be
|
||||
val result = AvailableHandleRiotCrackDownCommandFactory
|
||||
.availableCommand(makeGameState(), fid, pid)
|
||||
|
||||
inside(result.get) { case cmd: HandleRiotCrackDownAvailable =>
|
||||
cmd.actingProvinceId shouldBe pid
|
||||
cmd.availableHeroIds shouldBe rulingFactionHeroIds
|
||||
cmd.battalionIdsAvailable shouldBe battalionIds
|
||||
inside(result.get) {
|
||||
case cmd: HandleRiotCrackDownAvailable =>
|
||||
cmd.actingProvinceId shouldBe pid
|
||||
cmd.availableHeroIds shouldBe rulingFactionHeroIds
|
||||
cmd.battalionIdsAvailable shouldBe battalionIds
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,8 +100,9 @@ class AvailableHandleRiotCrackDownCommandFactoryTest extends AnyFlatSpec with Be
|
||||
val result = AvailableHandleRiotCrackDownCommandFactory
|
||||
.availableCommand(makeGameState(heroVigorOverrides = Map(10 -> 12.0)), fid, pid)
|
||||
|
||||
inside(result.get) { case cmd: HandleRiotCrackDownAvailable =>
|
||||
cmd.availableHeroIds shouldBe Vector(20, 30)
|
||||
inside(result.get) {
|
||||
case cmd: HandleRiotCrackDownAvailable =>
|
||||
cmd.availableHeroIds shouldBe Vector(20, 30)
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+18
-17
@@ -78,23 +78,24 @@ class PerformHostileArmySetupActionTest extends AnyFlatSpec with Matchers {
|
||||
result.actionResultType shouldBe SetUpHostileArmies
|
||||
result.changedProvinces should have size 1
|
||||
|
||||
inside(result.changedProvinces.head) { case c: ChangedProvinceC =>
|
||||
c.provinceId shouldBe 98
|
||||
c.removedIncomingArmyIds shouldBe Vector(22)
|
||||
c.newHostileArmies should have size 1
|
||||
|
||||
val hag = c.newHostileArmies.head
|
||||
hag.factionId shouldBe anotherFactionId
|
||||
hag.status shouldBe HostileArmyGroupStatus.AwaitingDecision
|
||||
hag.armies should have size 1
|
||||
|
||||
// Verify the full army structure is preserved
|
||||
val army = hag.armies.head
|
||||
army.id shouldBe 22
|
||||
army.originProvinceId shouldBe neighborProvinceId
|
||||
army.arrivalRound shouldBe currentRoundId
|
||||
army.startingPositionIndex shouldBe Some(3)
|
||||
army.army.factionId shouldBe anotherFactionId
|
||||
inside(result.changedProvinces.head) {
|
||||
case c: ChangedProvinceC =>
|
||||
c.provinceId shouldBe 98
|
||||
c.removedIncomingArmyIds shouldBe Vector(22)
|
||||
c.newHostileArmies should have size 1
|
||||
|
||||
val hag = c.newHostileArmies.head
|
||||
hag.factionId shouldBe anotherFactionId
|
||||
hag.status shouldBe HostileArmyGroupStatus.AwaitingDecision
|
||||
hag.armies should have size 1
|
||||
|
||||
// Verify the full army structure is preserved
|
||||
val army = hag.armies.head
|
||||
army.id shouldBe 22
|
||||
army.originProvinceId shouldBe neighborProvinceId
|
||||
army.arrivalRound shouldBe currentRoundId
|
||||
army.startingPositionIndex shouldBe Some(3)
|
||||
army.army.factionId shouldBe anotherFactionId
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user