OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [language/] [cxx/] [ustl/] [current/] [tests/] [bvt03.cpp] - Blame information for rev 819

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
// This file is part of the uSTL library, an STL implementation.
2
//
3
// Copyright (c) 2005-2009 by Mike Sharov <msharov@users.sourceforge.net>
4
// This file is free software, distributed under the MIT License.
5
 
6
#include "stdtest.h"
7
#include <unistd.h>
8
 
9
void TestStreams (void)
10
{
11
    const uint8_t magic_Char = 0x12;
12
    const uint16_t magic_Short = 0x1234;
13
    const uint32_t magic_Int = 0x12345678;
14
    const float magic_Float = 0.12345678;
15
    const double magic_Double = 0.123456789123456789;
16
    const bool magic_Bool = true;
17
 
18
    char c = magic_Char;
19
    unsigned char uc = magic_Char;
20
    int i = magic_Int;
21
    short si = magic_Short;
22
    long li = magic_Int;
23
    unsigned int ui = magic_Int;
24
    unsigned short usi = magic_Short;
25
    unsigned long uli = magic_Int;
26
    float f = magic_Float;
27
    double d = magic_Double;
28
    bool bv = magic_Bool;
29
 
30
    size_t totalSize = stream_size_of(c);
31
    totalSize += stream_size_of(uc);
32
    totalSize = Align (totalSize, alignof(bv));
33
    totalSize += stream_size_of(bv);
34
    totalSize = Align (totalSize, alignof(i));
35
    totalSize += stream_size_of(i);
36
    totalSize += stream_size_of(ui);
37
    totalSize = Align (totalSize);
38
    totalSize += stream_size_of(li);
39
    totalSize += stream_size_of(uli);
40
    totalSize = Align (totalSize, alignof(f));
41
    totalSize += stream_size_of(f);
42
    totalSize = Align (totalSize, alignof(d));
43
    totalSize += stream_size_of(d);
44
    totalSize += stream_size_of(si);
45
    totalSize += stream_size_of(usi);
46
 
47
    memblock b;
48
    b.resize (totalSize);
49
    b.fill (b.begin(), "\xCD", 1, b.size());
50
    ostream os (b);
51
 
52
    os << c;
53
    os << uc;
54
    os << ios::talign<bool>() << bv;
55
    os << ios::talign<int>() << i;
56
    os << ui;
57
    os << ios::align() << li;
58
    os << uli;
59
    os << ios::talign<float>() << f;
60
    os << ios::talign<double>() << d;
61
    os << si;
62
    os << usi;
63
    if (b.size() == os.pos())
64
        cout << "Correct number of bytes written\n";
65
    else
66
        cout.format ("Incorrect (%zu of %zu) number of bytes written\n", os.pos(), b.size());
67
    cout.flush();
68
 
69
    c = 0;
70
    uc = 0;
71
    bv = false;
72
    i = ui = li = uli = 0;
73
    f = 0; d = 0;
74
    si = usi = 0;
75
 
76
    istream is (b);
77
    is >> c;
78
    is >> uc;
79
    is >> ios::talign<bool>() >> bv;
80
    is >> ios::talign<int>() >> i;
81
    is >> ui;
82
    is >> ios::align() >> li;
83
    is >> uli;
84
    is >> ios::talign<float>() >> f;
85
    is >> ios::talign<double>() >> d;
86
    is >> si;
87
    is >> usi;
88
    if (is.pos() != b.size())
89
        cout << "Positional error\n";
90
 
91
    cout.format ("Values:\n"
92
        "char:    0x%02X\n"
93
        "u_char:  0x%02X\n"
94
        "bool:    %d\n"
95
        "int:     0x%08X\n"
96
        "u_int:   0x%08X\n"
97
        "long:    0x%08lX\n"
98
        "u_long:  0x%08lX\n"
99
        "float:   %.8f\n"
100
        "double:  %.16f\n"
101
        "short:   0x%04X\n"
102
        "u_short: 0x%04X\n",
103
        static_cast<int>(c), static_cast<int>(uc), static_cast<int>(bv),
104
        i, ui, li, uli, f, d, static_cast<int>(si), static_cast<int>(usi));
105
 
106
    if (isatty (STDIN_FILENO)) {
107
        cout << "\nBinary dump:\n";
108
        foreach (memblock::const_iterator, pc, b) {
109
            if (pc > b.begin() && !(distance(b.begin(), pc) % 8))
110
                cout << endl;
111
            cout.format ("%02X ", uint8_t(*pc));
112
        }
113
        cout << endl;
114
    }
115
}
116
 
117
StdBvtMain (TestStreams)

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.