@@ -4,6 +4,10 @@ char heap_start[8192];
4
4
#include "sort.c"
5
5
#include <criterion/criterion.h>
6
6
7
+ uint64_t MAPPING_ACCOUNT_LAMPORTS = 143821440 ;
8
+ uint64_t PRODUCT_ACCOUNT_LAMPORTS = 4454400 ;
9
+ uint64_t PRICE_ACCOUNT_LAMPORTS = 23942400 ;
10
+
7
11
Test (oracle , init_mapping ) {
8
12
9
13
// start with perfect inputs
@@ -30,7 +34,7 @@ Test(oracle, init_mapping) {
30
34
.executable = false
31
35
},{
32
36
.key = & mkey ,
33
- .lamports = & pqty ,
37
+ .lamports = & MAPPING_ACCOUNT_LAMPORTS ,
34
38
.data_len = sizeof ( pc_map_table_t ),
35
39
.data = (uint8_t * )mptr ,
36
40
.owner = & p_id ,
@@ -96,7 +100,7 @@ Test(oracle, add_mapping ) {
96
100
SolPubkey pkey = {.x = { 1 , }};
97
101
SolPubkey tkey = {.x = { 2 , }};
98
102
SolPubkey mkey = {.x = { 3 , }};
99
- uint64_t pqty = 100 , tqty = 100 ;
103
+ uint64_t pqty = 100 ;
100
104
pc_map_table_t mptr [1 ];
101
105
sol_memset ( mptr , 0 , sizeof ( pc_map_table_t ) );
102
106
SolAccountInfo acc [] = {{
@@ -111,7 +115,7 @@ Test(oracle, add_mapping ) {
111
115
.executable = false
112
116
},{
113
117
.key = & tkey ,
114
- .lamports = & pqty ,
118
+ .lamports = & MAPPING_ACCOUNT_LAMPORTS ,
115
119
.data_len = sizeof ( pc_map_table_t ),
116
120
.data = (uint8_t * )tptr ,
117
121
.owner = & p_id ,
@@ -121,7 +125,7 @@ Test(oracle, add_mapping ) {
121
125
.executable = false
122
126
},{
123
127
.key = & mkey ,
124
- .lamports = & tqty ,
128
+ .lamports = & MAPPING_ACCOUNT_LAMPORTS ,
125
129
.data_len = sizeof ( pc_map_table_t ),
126
130
.data = (uint8_t * )mptr ,
127
131
.owner = & p_id ,
@@ -186,7 +190,7 @@ Test(oracle, add_product) {
186
190
.executable = false
187
191
},{
188
192
.key = & mkey ,
189
- .lamports = & pqty ,
193
+ .lamports = & MAPPING_ACCOUNT_LAMPORTS ,
190
194
.data_len = sizeof ( pc_map_table_t ),
191
195
.data = (uint8_t * )mptr ,
192
196
.owner = & p_id ,
@@ -196,7 +200,7 @@ Test(oracle, add_product) {
196
200
.executable = false
197
201
},{
198
202
.key = & skey ,
199
- .lamports = & pqty ,
203
+ .lamports = & PRODUCT_ACCOUNT_LAMPORTS ,
200
204
.data_len = PC_PROD_ACC_SIZE ,
201
205
.data = (uint8_t * )sptr ,
202
206
.owner = & p_id ,
@@ -259,7 +263,7 @@ Test( oracle, add_publisher ) {
259
263
SolPubkey p_id = {.x = { 0xff , }};
260
264
SolPubkey pkey = {.x = { 1 , }};
261
265
SolPubkey skey = {.x = { 3 , }};
262
- uint64_t pqty = 100 , sqty = 200 ;
266
+ uint64_t pqty = 100 ;
263
267
pc_price_t sptr [1 ];
264
268
sol_memset ( sptr , 0 , sizeof ( pc_price_t ) );
265
269
sptr -> magic_ = PC_MAGIC ;
@@ -278,7 +282,7 @@ Test( oracle, add_publisher ) {
278
282
.executable = false
279
283
},{
280
284
.key = & skey ,
281
- .lamports = & sqty ,
285
+ .lamports = & pqty ,
282
286
.data_len = sizeof ( pc_price_t ),
283
287
.data = (uint8_t * )sptr ,
284
288
.owner = & p_id ,
@@ -294,6 +298,13 @@ Test( oracle, add_publisher ) {
294
298
.data_len = sizeof ( idata ),
295
299
.program_id = & p_id
296
300
};
301
+
302
+ // Expect the instruction to fail, because the price account isn't rent exempt
303
+ cr_assert ( ERROR_INVALID_ARGUMENT == dispatch ( & prm , acc ) );
304
+
305
+ // Now give the price account enough lamports to be rent exempt
306
+ acc [1 ].lamports = & PRICE_ACCOUNT_LAMPORTS ;
307
+
297
308
cr_assert ( SUCCESS == dispatch ( & prm , acc ) );
298
309
cr_assert ( sptr -> num_ == 1 );
299
310
cr_assert ( pc_pub_key_equal ( & idata .pub_ , & sptr -> comp_ [0 ].pub_ ) );
@@ -358,7 +369,7 @@ Test( oracle, upd_test ) {
358
369
.executable = false
359
370
},{
360
371
.key = & mkey ,
361
- .lamports = & pqty ,
372
+ .lamports = & PRICE_ACCOUNT_LAMPORTS ,
362
373
.data_len = sizeof ( pc_price_t ),
363
374
.data = (uint8_t * )mptr ,
364
375
.owner = & p_id ,
@@ -436,7 +447,7 @@ Test( oracle, upd_price ) {
436
447
.executable = false
437
448
},{
438
449
.key = & skey ,
439
- .lamports = & sqty ,
450
+ .lamports = & PRICE_ACCOUNT_LAMPORTS ,
440
451
.data_len = sizeof ( pc_price_t ),
441
452
.data = (uint8_t * )sptr ,
442
453
.owner = & p_id ,
@@ -547,7 +558,7 @@ Test( oracle, upd_price_no_fail_on_error ) {
547
558
.executable = false
548
559
},{
549
560
.key = & skey ,
550
- .lamports = & sqty ,
561
+ .lamports = & PRICE_ACCOUNT_LAMPORTS ,
551
562
.data_len = sizeof ( pc_price_t ),
552
563
.data = (uint8_t * )sptr ,
553
564
.owner = & p_id ,
@@ -745,7 +756,7 @@ Test( oracle, del_publisher ) {
745
756
};
746
757
SolPubkey pkey = {.x = { 1 , }};
747
758
SolPubkey skey = {.x = { 3 , }};
748
- uint64_t pqty = 100 , sqty = 200 ;
759
+ uint64_t pqty = 100 ;
749
760
pc_price_t sptr [1 ];
750
761
sol_memset ( sptr , 0 , sizeof ( pc_price_t ) );
751
762
sptr -> magic_ = PC_MAGIC ;
@@ -768,7 +779,7 @@ Test( oracle, del_publisher ) {
768
779
.executable = false
769
780
},{
770
781
.key = & skey ,
771
- .lamports = & sqty ,
782
+ .lamports = & PRICE_ACCOUNT_LAMPORTS ,
772
783
.data_len = sizeof ( pc_price_t ),
773
784
.data = (uint8_t * )sptr ,
774
785
.owner = (SolPubkey * )& p_id ,
0 commit comments