LCOV - code coverage report
Current view: top level - shared_model/interfaces/iroha_internal - transaction_sequence.cpp (source / functions) Hit Total Coverage
Test: cleared_cor.info Lines: 17 23 73.9 %
Date: 2019-03-07 14:46:43 Functions: 5 7 71.4 %

          Line data    Source code
       1             : /**
       2             :  * Copyright Soramitsu Co., Ltd. All Rights Reserved.
       3             :  * SPDX-License-Identifier: Apache-2.0
       4             :  */
       5             : 
       6             : #include "interfaces/iroha_internal/transaction_sequence.hpp"
       7             : 
       8             : #include <numeric>
       9             : 
      10             : #include "interfaces/iroha_internal/transaction_batch.hpp"
      11             : 
      12             : namespace shared_model {
      13             :   namespace interface {
      14             : 
      15             :     const types::SharedTxsCollectionType &TransactionSequence::transactions()
      16             :         const {
      17           9 :       if (not transactions_) {
      18           4 :         types::SharedTxsCollectionType result;
      19           4 :         auto transactions_amount =
      20           4 :             std::accumulate(std::begin(batches_),
      21           4 :                             std::end(batches_),
      22             :                             0ul,
      23             :                             [](size_t acc_size, auto batch) {
      24           4 :                               return acc_size + batch->transactions().size();
      25             :                             });
      26           4 :         result.reserve(transactions_amount);
      27           8 :         for (const auto &batch : batches_) {
      28           4 :           auto &transactions = batch->transactions();
      29           4 :           std::copy(transactions.begin(),
      30           4 :                     transactions.end(),
      31           4 :                     std::back_inserter(result));
      32             :         }
      33           4 :         transactions_.emplace(std::move(result));
      34           4 :       }
      35           9 :       return transactions_.value();
      36           0 :     }
      37             : 
      38             :     const types::BatchesCollectionType &TransactionSequence::batches() const {
      39           4 :       return batches_;
      40             :     }
      41             : 
      42             :     std::string TransactionSequence::toString() const {
      43           0 :       return detail::PrettyStringBuilder()
      44           0 :           .init("TransactionSequence")
      45           0 :           .appendAll(batches_,
      46             :                      [](const auto &batch) { return batch->toString(); })
      47           0 :           .finalize();
      48           0 :     }
      49             : 
      50             :     TransactionSequence::TransactionSequence(
      51             :         const types::BatchesCollectionType &batches)
      52           7 :         : batches_(batches) {}
      53             : 
      54             :   }  // namespace interface
      55             : }  // namespace shared_model

Generated by: LCOV version 1.13