EMMA Coverage Report (generated Tue Dec 18 20:38:46 CET 2007)
[all classes][cz.vutbr.feec.packets.rsi]

## COVERAGE SUMMARY FOR SOURCE FILE [GenericBlock.java]

name | class, % | method, % | block, % | line, %
--- | --- | --- | --- | ---
GenericBlock.java | 100% (1/1) | 92% (12/13) | 72% (325/451) | 83% (48,7/59)

### COVERAGE BREAKDOWN BY CLASS AND METHOD

name | class, % | method, % | block, % | line, %
--- | --- | --- | --- | ---
class GenericBlock | 100% (1/1) | 92% (12/13) | 72% (325/451) | 83% (48,7/59)
toString (): String |  | 0% (0/1) | 0% (0/18) | 0% (0/4)
generate (byte [], int): int |  | 100% (1/1) | 51% (94/184) | 64% (10,9/17)
<static initializer> |  | 100% (1/1) | 88% (7/8) | 87% (0,9/1)
parse (byte [], int, int): int |  | 100% (1/1) | 91% (172/189) | 99% (19,9/20)
GenericBlock (): void |  | 100% (1/1) | 100% (20/20) | 100% (6/6)
addBucket (int): void |  | 100% (1/1) | 100% (7/7) | 100% (2/2)
getMaximumDistributionValue (): long |  | 100% (1/1) | 100% (3/3) | 100% (1/1)
getMinimumDistributionValue (): long |  | 100% (1/1) | 100% (3/3) | 100% (1/1)
getMultiplicativeFactor (): int |  | 100% (1/1) | 100% (3/3) | 100% (1/1)
getNumberOfDistributionBuckets (): int |  | 100% (1/1) | 100% (4/4) | 100% (1/1)
setMaximumDistributionValue (long): void |  | 100% (1/1) | 100% (4/4) | 100% (2/2)
setMinimumDistributionValue (long): void |  | 100% (1/1) | 100% (4/4) | 100% (2/2)
setMultiplicativeFactor (int): void |  | 100% (1/1) | 100% (4/4) | 100% (2/2)

1 | package cz.vutbr.feec.packets.rsi;
2 |
3 | import java.util.Vector;
4 |
5 | import cz.vutbr.feec.packets.IPacket;
6 | import cz.vutbr.feec.packets.PacketGenerateException;
7 | import cz.vutbr.feec.packets.PacketParseException;
8 | import cz.vutbr.feec.packets.PacketUtils;
9 | import org.apache.commons.lang.builder.ToStringBuilder;
10 |
11 | abstract public class GenericBlock extends SubReportBlock implements IPacket {
12 | private int numberOfDistributionBuckets = -1;
13 | private int multiplicativeFactor = -1;
14 | private long minimumDistributionValue = -1;
15 | private long maximumDistributionValue = -1;
16 | private Vector<Integer> buckets = new Vector<Integer>();
17 |
18 | public int parse(byte[] resultArray, int offset, int packetLength)
19 | throws PacketParseException {
20 | super.parse(resultArray, offset, packetLength);
21 | this.numberOfDistributionBuckets = ((((resultArray[2 + offset] & 0xff) << 4) | (resultArray[3 + offset] & 0xff)) >> 4) & 0xfff;
22 |
23 | this.multiplicativeFactor = resultArray[offset + 3] & 0xf;
24 |
25 | this.minimumDistributionValue = ((resultArray[4 + offset] & 0xff) << 24)
26 | | ((resultArray[5 + offset] & 0xff) << 16)
27 | | ((resultArray[6 + offset] & 0xff) << 8)
28 | | (resultArray[7 + offset] & 0xff);
29 |
30 | this.maximumDistributionValue = ((resultArray[8 + offset] & 0xff) << 24)
31 | | ((resultArray[9 + offset] & 0xff) << 16)
32 | | ((resultArray[10 + offset] & 0xff) << 8)
33 | | (resultArray[11 + offset] & 0xff);
34 |
35 | assert ((this.length * 4) - 12) * 8 / numberOfDistributionBuckets == 4;
36 |
37 | buckets.removeAllElements();
38 | for (int i = 0; i < numberOfDistributionBuckets/2; i++) {
39 | byte actByte = resultArray[offset + 12];
40 | byte b1 = (byte) ((actByte >> 4) & 0xf);
41 | byte b2 = (byte) (actByte & 0xf);
42 | buckets.add(Integer.valueOf(b1));
43 | buckets.add(Integer.valueOf(b2));
44 | }
45 | return 12 + (numberOfDistributionBuckets * 4) / 8;
46 | }
47 |
48 | public void addBucket(int bucket) {
49 | buckets.add(bucket);
50 | }
51 |
52 | public int generate(byte[] array, int offset)
53 | throws PacketGenerateException {
54 | assert numberOfDistributionBuckets != 0 : "Paket bez Buckets nema zadny vyznam.";
55 | assert PacketUtils.checkSize(getNumberOfDistributionBuckets(), 12);
56 | assert PacketUtils.checkSize(multiplicativeFactor, 4);
57 | assert PacketUtils.checkSize(buckets.size(), 12);
58 | assert PacketUtils.checkSize(minimumDistributionValue, 32);
59 | assert PacketUtils.checkSize(maximumDistributionValue, 32);
60 | this.length = 3 + (buckets.size() + 7) / 8;
61 |
62 | assert ((length * 4 - 12) % numberOfDistributionBuckets) == 0 : "Paket je spatne nakongfigurovan. Delka a pocet bucketu neodopovidaji";
63 |
64 | numberOfDistributionBuckets = buckets.size();
65 | // int buckBitLength = ((this.length * 4) - 12) * 8 /
66 | // numberOfDistributionBuckets;
67 | // length = (buckBitLength * numberOfDistributionBuckets / 8) / 8;
68 | super.generate(array, offset);
69 | assert ((this.length * 4) - 12) * 8 / numberOfDistributionBuckets == 4 : " Je podporovano pouze 4 bity na jeden bucket.";
70 | PacketUtils.setOctet2(array, offset + 2, numberOfDistributionBuckets << 4);
71 | // set to zeroes
72 | array[offset + 3] ^= array[offset + 3] & 0x0f;
73 | array[offset + 3] |= multiplicativeFactor & 0x0f;
74 | PacketUtils.setOctet4(array, offset + 4, minimumDistributionValue);
75 | PacketUtils.setOctet4(array, offset + 8, maximumDistributionValue);
76 |
77 | return length * 4;
78 | }
79 |
80 | public int getNumberOfDistributionBuckets() {
81 | return buckets.size();
82 | }
83 |
84 | /**
85 | * @see java.lang.Object#toString()
86 | */
87 | public String toString() {
88 | return new ToStringBuilder(this).append("numberOfDistributionBuckets",
89 | this.numberOfDistributionBuckets)
90 | .append("type", this.getType()).append("length", this.length)
91 | .toString();
92 | }
93 |
94 | public int getMultiplicativeFactor() {
95 | return multiplicativeFactor;
96 | }
97 |
98 | public void setMultiplicativeFactor(int multiplicativeFactor) {
99 | this.multiplicativeFactor = multiplicativeFactor;
100 | }
101 |
102 | public long getMinimumDistributionValue() {
103 | return minimumDistributionValue;
104 | }
105 |
106 | public void setMinimumDistributionValue(long minimumDistributionValue) {
107 | this.minimumDistributionValue = minimumDistributionValue;
108 | }
109 |
110 | public long getMaximumDistributionValue() {
111 | return maximumDistributionValue;
112 | }
113 |
114 | public void setMaximumDistributionValue(long maximumDistributionValue) {
115 | this.maximumDistributionValue = maximumDistributionValue;
116 | }
117 |
118 | }

[all classes][cz.vutbr.feec.packets.rsi]
EMMA 2.0.5312 EclEmma Fix 1 (C) Vladimir Roubtsov