Skip to content

Commit 1eba4ad

Browse files
committed
carrot_core: unit tests
1 parent 9887528 commit 1eba4ad

File tree

8 files changed

+3943
-0
lines changed

8 files changed

+3943
-0
lines changed

src/carrot_impl/subaddress_index.h

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
// Copyright (c) 2025, The Monero Project
2+
//
3+
// All rights reserved.
4+
//
5+
// Redistribution and use in source and binary forms, with or without modification, are
6+
// permitted provided that the following conditions are met:
7+
//
8+
// 1. Redistributions of source code must retain the above copyright notice, this list of
9+
// conditions and the following disclaimer.
10+
//
11+
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12+
// of conditions and the following disclaimer in the documentation and/or other
13+
// materials provided with the distribution.
14+
//
15+
// 3. Neither the name of the copyright holder nor the names of its contributors may be
16+
// used to endorse or promote products derived from this software without specific
17+
// prior written permission.
18+
//
19+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20+
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21+
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22+
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24+
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25+
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26+
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27+
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28+
29+
#pragma once
30+
31+
//local headers
32+
33+
//third party headers
34+
35+
//standard headers
36+
#include <cstdint>
37+
38+
//forward declarations
39+
40+
namespace carrot
41+
{
42+
/**
43+
* brief: subaddress_index -
44+
*/
45+
struct subaddress_index
46+
{
47+
// j_major
48+
std::uint32_t major;
49+
// j_minor
50+
std::uint32_t minor;
51+
52+
bool is_subaddress() const
53+
{
54+
return major || minor;
55+
}
56+
};
57+
static inline bool operator==(const subaddress_index a, const subaddress_index b)
58+
{
59+
return a.major == b.major && a.minor == b.minor;
60+
}
61+
static inline bool operator!=(const subaddress_index a, const subaddress_index b)
62+
{
63+
return !(a == b);
64+
}
65+
66+
/**
67+
* brief: AddressDeriveType - used in hybrid key hierarchies to specify how to derive subaddresses for the same index
68+
*/
69+
enum class AddressDeriveType
70+
{
71+
Auto,
72+
PreCarrot,
73+
Carrot
74+
};
75+
76+
struct subaddress_index_extended
77+
{
78+
subaddress_index index;
79+
AddressDeriveType derive_type;
80+
};
81+
static inline bool operator==(const subaddress_index_extended &a, const subaddress_index_extended &b)
82+
{
83+
return a.index == b.index && a.derive_type == b.derive_type;
84+
}
85+
static inline bool operator!=(const subaddress_index_extended &a, const subaddress_index_extended &b)
86+
{
87+
return !(a == b);
88+
}
89+
} //namespace carrot

tests/unit_tests/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ set(unit_tests_sources
3838
bulletproofs.cpp
3939
bulletproofs_plus.cpp
4040
canonical_amounts.cpp
41+
carrot_convergence.cpp
42+
carrot_core.cpp
43+
carrot_legacy.cpp
44+
carrot_mock_helpers.cpp
45+
carrot_transcript_fixed.cpp
4146
chacha.cpp
4247
checkpoints.cpp
4348
command_line.cpp
@@ -113,6 +118,7 @@ monero_add_minimal_executable(unit_tests
113118
target_link_libraries(unit_tests
114119
PRIVATE
115120
ringct
121+
carrot_core
116122
cryptonote_protocol
117123
cryptonote_core
118124
daemon_messages

tests/unit_tests/carrot_convergence.cpp

Lines changed: 394 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)