From 8e97ef071774c0322aa9fb984b66c998cf493607 Mon Sep 17 00:00:00 2001 From: Hao Zhang Date: Sat, 14 Mar 2026 13:33:22 +0800 Subject: [PATCH] fix: Fix the return number of function execute of chain. --- src/chain.cc | 2 +- tests/test_chain.cc | 12 ++++++------ tests/test_chain.mjs | 12 ++++++------ tests/test_chain.py | 12 ++++++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/chain.cc b/src/chain.cc index 32a930c..4080e2b 100644 --- a/src/chain.cc +++ b/src/chain.cc @@ -127,7 +127,7 @@ namespace ds { done_cycle = current_cycle; } ++current_cycle; - length_t count = temp_facts.size(); + length_t count = temp_rules.size() + temp_facts.size(); for (auto it = temp_facts.begin(); it != temp_facts.end();) { auto node = temp_facts.extract(it++); facts.emplace(std::move(node.value()), current_cycle); diff --git a/tests/test_chain.cc b/tests/test_chain.cc index a4d9351..3c9af4b 100644 --- a/tests/test_chain.cc +++ b/tests/test_chain.cc @@ -63,7 +63,7 @@ TEST_F(TestChain, execute_multiple_premises_chain) { } return false; }); - EXPECT_EQ(count, 1); + EXPECT_EQ(count, 2); EXPECT_TRUE(success); } @@ -71,7 +71,7 @@ TEST_F(TestChain, execute_multiple_premises_partial) { chain->add("p q r"); chain->add("p"); auto count = chain->execute([](ds::rule_t* rule) { return false; }); - EXPECT_EQ(count, 0); + EXPECT_EQ(count, 1); } TEST_F(TestChain, execute_three_premises) { @@ -87,7 +87,7 @@ TEST_F(TestChain, execute_three_premises) { } return false; }); - EXPECT_EQ(count, 1); + EXPECT_EQ(count, 3); EXPECT_TRUE(success); } @@ -124,7 +124,7 @@ TEST_F(TestChain, execute_exceed_by_too_many_premises) { EXPECT_TRUE(chain->add("ccccc")); EXPECT_TRUE(chain->add("ddddd")); EXPECT_TRUE(chain->add("eeeee")); - EXPECT_EQ(chain->execute([](ds::rule_t* rule) { return false; }), 1); + EXPECT_EQ(chain->execute([](ds::rule_t* rule) { return false; }), 5); chain->reset(); chain->set_limit_size(100); chain->set_buffer_size(1000); @@ -134,7 +134,7 @@ TEST_F(TestChain, execute_exceed_by_too_many_premises) { EXPECT_TRUE(chain->add("ccccc")); EXPECT_TRUE(chain->add("ddddd")); EXPECT_TRUE(chain->add("eeeee")); - EXPECT_EQ(chain->execute([](ds::rule_t* rule) { return false; }), 1); + EXPECT_EQ(chain->execute([](ds::rule_t* rule) { return false; }), 5); chain->reset(); chain->set_limit_size(100); chain->set_buffer_size(100); @@ -144,5 +144,5 @@ TEST_F(TestChain, execute_exceed_by_too_many_premises) { EXPECT_TRUE(chain->add("ccccc")); EXPECT_TRUE(chain->add("ddddd")); EXPECT_TRUE(chain->add("eeeee")); - EXPECT_EQ(chain->execute([](ds::rule_t* rule) { return false; }), 0); + EXPECT_EQ(chain->execute([](ds::rule_t* rule) { return false; }), 1); } diff --git a/tests/test_chain.mjs b/tests/test_chain.mjs index 3171cda..87629eb 100644 --- a/tests/test_chain.mjs +++ b/tests/test_chain.mjs @@ -50,7 +50,7 @@ test("execute_multiple_premises_chain", () => { } return false; }); - expect(count).toBe(1); + expect(count).toBe(2); expect(success).toBe(true); }); @@ -58,7 +58,7 @@ test("execute_multiple_premises_partial", () => { chain.add("p q r"); chain.add("p"); const count = chain.execute((rule) => false); - expect(count).toBe(0); + expect(count).toBe(1); }); test("execute_three_premises", () => { @@ -74,7 +74,7 @@ test("execute_three_premises", () => { } return false; }); - expect(count).toBe(1); + expect(count).toBe(3); expect(success).toBe(true); }); @@ -110,7 +110,7 @@ test("execute_exceed_by_too_many_premises", () => { expect(newChain.add("ccccc")).toBe(true); expect(newChain.add("ddddd")).toBe(true); expect(newChain.add("eeeee")).toBe(true); - expect(newChain.execute((rule) => false)).toBe(1); + expect(newChain.execute((rule) => false)).toBe(5); newChain.reset(); newChain.set_limit_size(100); @@ -121,7 +121,7 @@ test("execute_exceed_by_too_many_premises", () => { expect(newChain.add("ccccc")).toBe(true); expect(newChain.add("ddddd")).toBe(true); expect(newChain.add("eeeee")).toBe(true); - expect(newChain.execute((rule) => false)).toBe(1); + expect(newChain.execute((rule) => false)).toBe(5); newChain.reset(); newChain.set_limit_size(100); @@ -132,5 +132,5 @@ test("execute_exceed_by_too_many_premises", () => { expect(newChain.add("ccccc")).toBe(true); expect(newChain.add("ddddd")).toBe(true); expect(newChain.add("eeeee")).toBe(true); - expect(newChain.execute((rule) => false)).toBe(0); + expect(newChain.execute((rule) => false)).toBe(1); }); diff --git a/tests/test_chain.py b/tests/test_chain.py index 7c83edb..b2986d5 100644 --- a/tests/test_chain.py +++ b/tests/test_chain.py @@ -55,7 +55,7 @@ def callback(rule: apyds.Rule) -> bool: return False count = chain.execute(callback) - assert count == 1 + assert count == 2 assert success @@ -63,7 +63,7 @@ def test_execute_multiple_premises_partial(chain: apyds.Chain) -> None: chain.add("p q r") chain.add("p") count = chain.execute(lambda rule: False) - assert count == 0 + assert count == 1 def test_execute_three_premises(chain: apyds.Chain) -> None: @@ -81,7 +81,7 @@ def callback(rule: apyds.Rule) -> bool: return False count = chain.execute(callback) - assert count == 1 + assert count == 3 assert success @@ -117,7 +117,7 @@ def test_execute_exceed_by_too_many_premises() -> None: assert chain.add("ccccc") assert chain.add("ddddd") assert chain.add("eeeee") - assert chain.execute(lambda rule: False) == 1 + assert chain.execute(lambda rule: False) == 5 chain.reset() chain.set_limit_size(100) @@ -128,7 +128,7 @@ def test_execute_exceed_by_too_many_premises() -> None: assert chain.add("ccccc") assert chain.add("ddddd") assert chain.add("eeeee") - assert chain.execute(lambda rule: False) == 1 + assert chain.execute(lambda rule: False) == 5 chain.reset() chain.set_limit_size(100) @@ -139,4 +139,4 @@ def test_execute_exceed_by_too_many_premises() -> None: assert chain.add("ccccc") assert chain.add("ddddd") assert chain.add("eeeee") - assert chain.execute(lambda rule: False) == 0 + assert chain.execute(lambda rule: False) == 1