@@ -856,13 +856,14 @@ TEST_F(ConverterTest, StartSuggestion) {
856
856
ConversionRequest::Options options = {.request_type =
857
857
ConversionRequest::SUGGESTION};
858
858
Segments segments;
859
- const ConversionRequest request = ConversionRequestBuilder ()
860
- .SetComposer (composer)
861
- .SetRequestView (client_request)
862
- .SetConfigView (config)
863
- .SetHistorySegmentsView (segments)
864
- .SetOptions (std::move (options))
865
- .Build ();
859
+ const ConversionRequest request =
860
+ ConversionRequestBuilder ()
861
+ .SetComposer (composer)
862
+ .SetRequestView (client_request)
863
+ .SetConfigView (config)
864
+ .SetHistoryResult (Converter::MakeHistoryResult (segments))
865
+ .SetOptions (std::move (options))
866
+ .Build ();
866
867
867
868
EXPECT_TRUE (converter->StartPrediction (request, &segments));
868
869
EXPECT_EQ (segments.segments_size (), 1 );
@@ -881,13 +882,14 @@ TEST_F(ConverterTest, StartSuggestion) {
881
882
ConversionRequest::Options options = {.request_type =
882
883
ConversionRequest::SUGGESTION};
883
884
Segments segments;
884
- const ConversionRequest request = ConversionRequestBuilder ()
885
- .SetComposer (composer)
886
- .SetRequestView (client_request)
887
- .SetConfigView (config)
888
- .SetHistorySegmentsView (segments)
889
- .SetOptions (std::move (options))
890
- .Build ();
885
+ const ConversionRequest request =
886
+ ConversionRequestBuilder ()
887
+ .SetComposer (composer)
888
+ .SetRequestView (client_request)
889
+ .SetConfigView (config)
890
+ .SetHistoryResult (Converter::MakeHistoryResult (segments))
891
+ .SetOptions (std::move (options))
892
+ .Build ();
891
893
892
894
EXPECT_TRUE (converter->StartPrediction (request, &segments));
893
895
EXPECT_EQ (segments.segments_size (), 1 );
@@ -1027,7 +1029,7 @@ TEST_F(ConverterTest, PredictSetKey) {
1027
1029
const ConversionRequest request =
1028
1030
ConversionRequestBuilder ()
1029
1031
.SetComposer (composer)
1030
- .SetHistorySegmentsView ( segments)
1032
+ .SetHistoryResult ( Converter::MakeHistoryResult ( segments) )
1031
1033
.SetRequestType (ConversionRequest::PREDICTION)
1032
1034
.Build ();
1033
1035
ASSERT_TRUE (converter->StartPrediction (request, &segments));
@@ -1132,7 +1134,7 @@ TEST_F(ConverterTest, ComposerKeySelection) {
1132
1134
const ConversionRequest request =
1133
1135
ConversionRequestBuilder ()
1134
1136
.SetComposer (composer)
1135
- .SetHistorySegmentsView ( segments)
1137
+ .SetHistoryResult ( Converter::MakeHistoryResult ( segments) )
1136
1138
.SetOptions (
1137
1139
{.composer_key_selection = ConversionRequest::CONVERSION_KEY})
1138
1140
.Build ();
@@ -1149,7 +1151,7 @@ TEST_F(ConverterTest, ComposerKeySelection) {
1149
1151
const ConversionRequest request =
1150
1152
ConversionRequestBuilder ()
1151
1153
.SetComposer (composer)
1152
- .SetHistorySegmentsView ( segments)
1154
+ .SetHistoryResult ( Converter::MakeHistoryResult ( segments) )
1153
1155
.SetOptions (
1154
1156
{.composer_key_selection = ConversionRequest::PREDICTION_KEY})
1155
1157
.Build ();
@@ -1183,11 +1185,12 @@ TEST_F(ConverterTest, SuppressionDictionaryForRewriter) {
1183
1185
composer.InsertCharacter (" placeholder" );
1184
1186
commands::Context context;
1185
1187
Segments segments;
1186
- const ConversionRequest request = ConversionRequestBuilder ()
1187
- .SetComposer (composer)
1188
- .SetHistorySegmentsView (segments)
1189
- .SetConfig (config)
1190
- .Build ();
1188
+ const ConversionRequest request =
1189
+ ConversionRequestBuilder ()
1190
+ .SetComposer (composer)
1191
+ .SetHistoryResult (Converter::MakeHistoryResult (segments))
1192
+ .SetConfig (config)
1193
+ .Build ();
1191
1194
EXPECT_TRUE (converter->StartConversion (request, &segments));
1192
1195
1193
1196
// Verify that words inserted by the rewriter is suppressed if its in the
@@ -1386,11 +1389,12 @@ TEST_F(ConverterTest, LimitCandidatesSize) {
1386
1389
mozc::composer::Composer composer (table, request_proto, config);
1387
1390
composer.InsertCharacterPreedit (" あ" );
1388
1391
Segments segments;
1389
- const ConversionRequest request1 = ConversionRequestBuilder ()
1390
- .SetComposer (composer)
1391
- .SetHistorySegmentsView (segments)
1392
- .SetRequest (request_proto)
1393
- .Build ();
1392
+ const ConversionRequest request1 =
1393
+ ConversionRequestBuilder ()
1394
+ .SetComposer (composer)
1395
+ .SetHistoryResult (Converter::MakeHistoryResult (segments))
1396
+ .SetRequest (request_proto)
1397
+ .Build ();
1394
1398
ASSERT_TRUE (converter->StartConversion (request1, &segments));
1395
1399
ASSERT_EQ (segments.conversion_segments_size (), 1 );
1396
1400
const int original_candidates_size = segments.segment (0 ).candidates_size ();
@@ -1402,11 +1406,12 @@ TEST_F(ConverterTest, LimitCandidatesSize) {
1402
1406
1403
1407
segments.Clear ();
1404
1408
request_proto.set_candidates_size_limit (original_candidates_size - 1 );
1405
- const ConversionRequest request2 = ConversionRequestBuilder ()
1406
- .SetComposer (composer)
1407
- .SetRequest (request_proto)
1408
- .SetHistorySegmentsView (segments)
1409
- .Build ();
1409
+ const ConversionRequest request2 =
1410
+ ConversionRequestBuilder ()
1411
+ .SetComposer (composer)
1412
+ .SetRequest (request_proto)
1413
+ .SetHistoryResult (Converter::MakeHistoryResult (segments))
1414
+ .Build ();
1410
1415
ASSERT_TRUE (converter->StartConversion (request2, &segments));
1411
1416
ASSERT_EQ (segments.conversion_segments_size (), 1 );
1412
1417
EXPECT_GE (original_candidates_size - 1 ,
@@ -1418,11 +1423,12 @@ TEST_F(ConverterTest, LimitCandidatesSize) {
1418
1423
1419
1424
segments.Clear ();
1420
1425
request_proto.set_candidates_size_limit (0 );
1421
- const ConversionRequest request3 = ConversionRequestBuilder ()
1422
- .SetComposer (composer)
1423
- .SetRequest (request_proto)
1424
- .SetHistorySegmentsView (segments)
1425
- .Build ();
1426
+ const ConversionRequest request3 =
1427
+ ConversionRequestBuilder ()
1428
+ .SetComposer (composer)
1429
+ .SetRequest (request_proto)
1430
+ .SetHistoryResult (Converter::MakeHistoryResult (segments))
1431
+ .Build ();
1426
1432
ASSERT_TRUE (converter->StartConversion (request3, &segments));
1427
1433
ASSERT_EQ (segments.conversion_segments_size (), 1 );
1428
1434
EXPECT_EQ (segments.segment (0 ).candidates_size (), 1 );
@@ -1477,7 +1483,7 @@ TEST_F(ConverterTest, UserEntryInMobilePrediction) {
1477
1483
.SetComposer (composer)
1478
1484
.SetRequestView (request)
1479
1485
.SetConfigView (config)
1480
- .SetHistorySegmentsView ( segments)
1486
+ .SetHistoryResult ( Converter::MakeHistoryResult ( segments) )
1481
1487
.SetOptions (std::move (options))
1482
1488
.Build ();
1483
1489
EXPECT_TRUE (converter->StartPrediction (conversion_request, &segments));
@@ -1668,7 +1674,7 @@ TEST_F(ConverterTest, RewriterShouldRespectDefaultCandidates) {
1668
1674
.SetComposer (composer)
1669
1675
.SetRequestView (request)
1670
1676
.SetConfigView (config)
1671
- .SetHistorySegmentsView ( segments)
1677
+ .SetHistoryResult ( Converter::MakeHistoryResult ( segments) )
1672
1678
.SetOptions (std::move (options))
1673
1679
.Build ();
1674
1680
@@ -1782,7 +1788,7 @@ TEST_F(ConverterTest, DoNotAddOverlappingNodesForPrediction) {
1782
1788
.SetComposer (composer)
1783
1789
.SetRequestView (request)
1784
1790
.SetConfigView (config)
1785
- .SetHistorySegmentsView ( segments)
1791
+ .SetHistoryResult ( Converter::MakeHistoryResult ( segments) )
1786
1792
.SetOptions (std::move (options))
1787
1793
.Build ();
1788
1794
@@ -2437,6 +2443,42 @@ TEST_F(ConverterTest, MakeLearningResultsTest) {
2437
2443
}
2438
2444
}
2439
2445
2446
+ TEST_F (ConverterTest, MakeHistoryResultTest) {
2447
+ Segments segments;
2448
+ for (int i = 0 ; i < 3 ; ++i) {
2449
+ Segment *segment = segments.add_segment ();
2450
+ segment->set_segment_type (Segment::HISTORY);
2451
+ Candidate *c = segment->add_candidate ();
2452
+ c->key = absl::StrCat (" k" , i);
2453
+ c->content_key = " k" ;
2454
+ c->value = absl::StrCat (" v" , i);
2455
+ c->content_value = " v" ;
2456
+ c->lid = i;
2457
+ c->rid = i + 1 ;
2458
+ c->cost = i;
2459
+ };
2460
+
2461
+ const prediction::Result result = Converter::MakeHistoryResult (segments);
2462
+ EXPECT_EQ (result.key , " k0k1k2" );
2463
+ EXPECT_EQ (result.value , " v0v1v2" );
2464
+ EXPECT_EQ (result.lid , segments.segment (0 ).candidate (0 ).lid );
2465
+ EXPECT_EQ (result.rid , segments.segment (2 ).candidate (0 ).rid );
2466
+ EXPECT_EQ (result.cost , 2 ); // only the last cost.
2467
+
2468
+ int n = 0 ;
2469
+ for (Candidate::InnerSegmentIterator iter (result.inner_segment_boundary ,
2470
+ result.key , result.value );
2471
+ !iter.Done (); iter.Next ()) {
2472
+ const Candidate &c = segments.segment (n).candidate (0 );
2473
+ EXPECT_EQ (iter.GetKey (), c.key );
2474
+ EXPECT_EQ (iter.GetContentKey (), c.content_key );
2475
+ EXPECT_EQ (iter.GetValue (), c.value );
2476
+ EXPECT_EQ (iter.GetContentValue (), c.content_value );
2477
+ ++n;
2478
+ }
2479
+ EXPECT_EQ (n, 3 );
2480
+ }
2481
+
2440
2482
TEST_F (ConverterTest, Bugfix424676259) {
2441
2483
auto mock_predictor = absl::make_unique<MockPredictor>();
2442
2484
auto mock_rewriter = absl::make_unique<MockRewriter>();
0 commit comments