Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
30bb470
Merge pull request #1 from chuff/master
iabmayank Sep 27, 2022
1d54624
Merge pull request #2 from chuff/master
iabmayank Sep 28, 2022
7d2bf67
Merge pull request #3 from chuff/master
iabmayank Oct 12, 2022
85c03cd
initial multi state implementation
Oct 14, 2022
293e235
multi state
Nov 10, 2022
331b0d4
unit tests
Nov 10, 2022
dec10a5
Merge pull request #4 from chuff/master
iabmayank Nov 14, 2022
55d0573
exposing id based methods in GppModel
Nov 18, 2022
86d6c40
Merge pull request #5 from chuff/master
iabmayank Nov 18, 2022
ded14f1
personal data consents fix, reduce multi state subsection id (#10)
chuff Dec 6, 2022
ecd9ebe
3.0.0 (#11)
chuff Dec 9, 2022
1028adf
fix multi state name, add unit tests (#13)
chuff Dec 13, 2022
569a002
3.0.1 (#14)
chuff Dec 13, 2022
888f6e8
Convenience Methods (#15)
chuff Dec 22, 2022
3b0e704
full list of fields to readme (#16)
chuff Jan 1, 2023
4d08f67
tcfeuv2 backwards compatible (#19)
chuff Jan 10, 2023
1663a06
Update dependencies. Fix bitfield cast. (#20)
chuff Jan 12, 2023
2d39d96
Dedupe and sort lists. Added InvalidFieldError. (#24)
chuff Jan 20, 2023
fe36352
issue 26: wrong version number for TcfCaV1 (#27)
guofangli Aug 29, 2023
b4ce06d
Removes duplicate section in the GppModel.decodeSection if tree as Us…
SuprPhatAnon Aug 29, 2023
58fd339
Updating GVL code as V3 and adding some comments (#32)
chuff Aug 30, 2023
b539634
rename missed multistate usp* methods to us* (#35)
chuff Sep 14, 2023
cafab6a
Adding a new field in Vendor for "impConsPurposes" as the GVL for Can…
srinivas81 Sep 14, 2023
db78746
3.1.1
Sep 14, 2023
9824305
3.1.2-SNAPSHOT
Sep 14, 2023
2b303d1
Version Bump (#38)
chuff Sep 14, 2023
8106a9e
Merge remote-tracking branch 'upstream/master'
Sep 23, 2023
60eb664
lazy decoding (#34)
chuff Apr 9, 2024
a3f62d7
Update README.md (#46)
danielsao Apr 11, 2024
d51c324
Validation (#36)
chuff Apr 15, 2024
3e70a3e
tcfca pub restrictions and disclosed vendors (#39)
chuff Apr 15, 2024
9160114
Merge remote-tracking branch 'upstream/master'
Apr 16, 2024
310ae4d
3.2.0
Apr 16, 2024
cae4e3c
3.2.1-SNAPSHOT
Apr 16, 2024
fcd6061
Versioning (#47)
chuff Apr 16, 2024
c80ab0c
Merge remote-tracking branch 'upstream/master'
Jul 1, 2024
4c113b6
Remove multistate version (#60)
chuff Oct 11, 2024
30fd4e1
Merge branch 'IABTechLab:master' into master
chuff Nov 1, 2024
daffbe9
Post release version bump (#64)
chuff Nov 4, 2024
c4a3214
remove validation
Nov 16, 2024
7d0233a
fix lazy decoding in decodeSection
Nov 19, 2024
6d8bf77
3.2.2
aitsxhxl Mar 17, 2025
408ad34
3.2.3-SNAPSHOT
aitsxhxl Mar 17, 2025
bff6695
Tx fl or mt (#57)
chuff Mar 18, 2025
d3d5017
Update AbstractLazilyEncodableSection.java (#61)
naveenjr7 Mar 18, 2025
f5bc12d
Merge remote-tracking branch 'upstream/master'
Mar 21, 2025
8da3fe6
DE IA NE NH NJ TN MSPA USNAT (#65)
chuff Mar 22, 2025
3403e0c
Merge remote-tracking branch 'upstream/master'
Mar 25, 2025
81e4b04
Merge branch 'master' into remove-validation
chuff Mar 25, 2025
7c1acdd
Merge branch 'remove-validation'
Mar 25, 2025
f6e72f9
Updating CompressedBase64UrlEncoder to match the spec
Apr 25, 2025
3b39ba1
Merge remote-tracking branch 'upstream/master' into base64-to-spec
Jun 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ public UsMn getUsMnSection() {
return (UsMn) getSection(UsMn.NAME);
}


public List<Integer> getSectionIds() {
if (!this.decoded) {
this.sections = this.decodeModel(this.encodedString);
Expand Down Expand Up @@ -345,7 +346,7 @@ protected String encodeModel(Map<String, EncodableSection> sections) {
}

protected Map<String, EncodableSection> decodeModel(String str) {
if (str == null || str.isEmpty() || str.startsWith("DB")) {
if (str == null || str.isEmpty() || str.startsWith("D")) {
Map<String, EncodableSection> sections = new HashMap<>();

if (str != null && !str.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,16 @@ public static CompressedBase64UrlEncoder getInstance() {

@Override
protected String pad(String bitString) {
// https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Core/Consent%20String%20Specification.md#creating-a-gpp-string
char[] chars1 = null;
if(bitString.length() % 8 > 0) {
chars1 = new char[8 - (bitString.length() % 8)];
if(bitString.length() % 6 > 0) {
chars1 = new char[6 - (bitString.length() % 6)];
} else {
chars1 = new char[0];
}
Arrays.fill(chars1, '0');

char[] chars2 = null;
if((bitString.length() + chars1.length) % 6 > 0) {
chars2 = new char[6 - ((bitString.length() + chars1.length) % 6)];
} else {
chars2 = new char[0];
}
Arrays.fill(chars2, '0');

return bitString + new String(chars1) + new String(chars2);

return bitString + new String(chars1);
}

}
113 changes: 55 additions & 58 deletions iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,22 @@
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Arrays;

import com.iab.gpp.encoder.field.*;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import com.iab.gpp.encoder.error.DecodingException;
import com.iab.gpp.encoder.field.TcfCaV1Field;
import com.iab.gpp.encoder.field.TcfEuV2Field;
import com.iab.gpp.encoder.field.UsCaField;
import com.iab.gpp.encoder.field.UsCoField;
import com.iab.gpp.encoder.field.UsCtField;
import com.iab.gpp.encoder.field.UsFlField;
import com.iab.gpp.encoder.field.UsMtField;
import com.iab.gpp.encoder.field.UsNatField;
import com.iab.gpp.encoder.field.UsOrField;
import com.iab.gpp.encoder.field.UsTxField;
import com.iab.gpp.encoder.field.UsUtField;
import com.iab.gpp.encoder.field.UsVaField;
import com.iab.gpp.encoder.field.UspV1Field;
import com.iab.gpp.encoder.section.TcfCaV1;
import com.iab.gpp.encoder.section.TcfEuV2;
import com.iab.gpp.encoder.section.UsCa;
Expand All @@ -17,7 +28,6 @@
import com.iab.gpp.encoder.section.UsDe;
import com.iab.gpp.encoder.section.UsFl;
import com.iab.gpp.encoder.section.UsIa;
import com.iab.gpp.encoder.section.UsMn;
import com.iab.gpp.encoder.section.UsMt;
import com.iab.gpp.encoder.section.UsNat;
import com.iab.gpp.encoder.section.UsNe;
Expand Down Expand Up @@ -59,6 +69,20 @@ public void testEncodeDefault() {

}

@Test
public void testDecodingException() {
Assertions.assertThrows(DecodingException.class, () -> {
new GppModel("invalid gpp string").getHeader();
});
}

@Test()
public void testDecodeGarbage() {
Assertions.assertThrows(DecodingException.class, () -> {
new GppModel("z").getUsCtSection();
});
}

@Test
public void testEncodeDefaultAll() {
GppModel gppModel = new GppModel();
Expand All @@ -82,7 +106,6 @@ public void testEncodeDefaultAll() {
Assertions.assertEquals(false, gppModel.hasSection(UsNh.NAME));
Assertions.assertEquals(false, gppModel.hasSection(UsNj.NAME));
Assertions.assertEquals(false, gppModel.hasSection(UsTn.NAME));
Assertions.assertEquals(false, gppModel.hasSection(UsMn.NAME));

gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.VERSION, TcfEuV2.VERSION);
gppModel.setFieldValue(TcfEuV2.NAME, TcfCaV1Field.CREATED, utcDateTime);
Expand All @@ -101,13 +124,13 @@ public void testEncodeDefaultAll() {
gppModel.setFieldValue(UsMt.NAME, UsMtField.VERSION, UsMt.VERSION);
gppModel.setFieldValue(UsOr.NAME, UsOrField.VERSION, UsOr.VERSION);
gppModel.setFieldValue(UsTx.NAME, UsTxField.VERSION, UsTx.VERSION);
gppModel.setFieldValue(UsDe.NAME, UsDeField.VERSION, UsDe.VERSION);
gppModel.setFieldValue(UsIa.NAME, UsIaField.VERSION, UsIa.VERSION);
gppModel.setFieldValue(UsNe.NAME, UsNeField.VERSION, UsNe.VERSION);
gppModel.setFieldValue(UsNh.NAME, UsNhField.VERSION, UsNh.VERSION);
gppModel.setFieldValue(UsNj.NAME, UsNjField.VERSION, UsNj.VERSION);
gppModel.setFieldValue(UsTn.NAME, UsTnField.VERSION, UsTn.VERSION);
gppModel.setFieldValue(UsMn.NAME, UsMnField.VERSION, UsMn.VERSION);
gppModel.setFieldValue(UsDe.NAME, UsTxField.VERSION, UsTx.VERSION);
gppModel.setFieldValue(UsIa.NAME, UsTxField.VERSION, UsTx.VERSION);
gppModel.setFieldValue(UsNe.NAME, UsTxField.VERSION, UsTx.VERSION);
gppModel.setFieldValue(UsNh.NAME, UsTxField.VERSION, UsTx.VERSION);
gppModel.setFieldValue(UsNj.NAME, UsTxField.VERSION, UsTx.VERSION);
gppModel.setFieldValue(UsTn.NAME, UsTxField.VERSION, UsTx.VERSION);



Assertions.assertEquals(true, gppModel.hasSection(TcfEuV2.NAME));
Expand All @@ -129,26 +152,12 @@ public void testEncodeDefaultAll() {
Assertions.assertEquals(true, gppModel.hasSection(UsNh.NAME));
Assertions.assertEquals(true, gppModel.hasSection(UsNj.NAME));
Assertions.assertEquals(true, gppModel.hasSection(UsTn.NAME));
Assertions.assertEquals(true, gppModel.hasSection(UsMn.NAME));

String gppString = gppModel.encode();
Assertions.assertEquals(
"DBACOYs~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA~1---~BAAAAAAAAABA.QA~BAAAAABA.QA~BAAAABA~BAAAAEA.QA~BAAAAAQA~BAAAAAEA.QA~BAAAAABA~BAAAAABA.QA~BAAAAAABAA.QA~BAAAAAQA.QA~BAAAAAABAA.QA~BAAAAAQA.QA~BAAAAAQA.QA~BAAAAABA.QA~BAAAAAAAQA.QA~BAAAAAQA.QA~BAAAAAQA.QA",
gppString);
}
"DBACOdM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAA.YAAAAAAAAA~1---~BAAAAAAAAABA.Q~BAAAAABA.Q~BAAAABA~BAAAAEA.Q~BAAAAAQ~BAAAAAEA.Q~BAAAAABA~BAAAAABA.Q~BAAAAAABA.Q~BAAAAAQ.Q~BAAAAAABA.Q~BAAAAAQ.Q~BAAAAAQ.Q~BAAAAABA.Q~BAAAAAAAQ.Q~BAAAAAQ.Q",
gppString);

@Test
public void testDecodingException() {
Assertions.assertThrows(DecodingException.class, () -> {
new GppModel("invalid gpp string").getHeader();
});
}

@Test()
public void testDecodeGarbage() {
Assertions.assertThrows(DecodingException.class, () -> {
new GppModel("z").getUsCtSection();
});
}

@Test
Expand Down Expand Up @@ -178,7 +187,7 @@ public void testEncodeUspv1() {


String gppString = gppModel.encode();
Assertions.assertEquals("DBABTA~1YNN", gppString);
Assertions.assertEquals("DBABT~1YNN", gppString);

Assertions.assertEquals(Arrays.asList(6), gppModel.getSectionIds());
Assertions.assertEquals(true, gppModel.hasSection(UspV1.ID));
Expand Down Expand Up @@ -226,7 +235,7 @@ public void testEncodeTcfEuV2() {


String gppString = gppModel.encode();
Assertions.assertEquals("DBABMA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", gppString);
Assertions.assertEquals("DBABM~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", gppString);

Assertions.assertEquals(2, gppString.split("~").length);

Expand Down Expand Up @@ -275,7 +284,7 @@ public void testEncodeUspV1AndTcfEuV2() {
Assertions.assertEquals(false, gppModel.hasSection(TcfCaV1.NAME));

String gppString = gppModel.encode();
Assertions.assertEquals("DBACNYA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~1YNN", gppString);
Assertions.assertEquals("DBACNY~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~1YNN", gppString);

Assertions.assertEquals(3, gppString.split("~").length);

Expand Down Expand Up @@ -373,7 +382,7 @@ public void testEncodeUspV1AndTcfEuV2AndTcfCaV1() {

String gppString = gppModel.encode();
Assertions.assertEquals(
"DBACOeA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgABABAAABAB4AACACAAA.fHHHA4444ao~1YNN",
"DBACOe~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgABABAAABAB4AACACAA.fHHHA4444ao~1YNN",
gppString);

Assertions.assertEquals(4, gppString.split("~").length);
Expand Down Expand Up @@ -406,7 +415,7 @@ public void testDecodeDefaults() {
@Test
public void testDecodeDefaultsAll() {
String gppString =
"DBACOYs~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA~1---~BAAAAAAAAABA.QA~BAAAAABA.QA~BAAAABA~BAAAAEA.QA~BAAAAAQA~BAAAAAEA.QA~BAAAAABA~BAAAAABA.QA~BAAAAAABAA.QA~BAAAAAQA.QA~BAAAAAABAA.QA~BAAAAAQA.QA~BAAAAAQA.QA~BAAAAABA.QA~BAAAAAAAQA.QA~BAAAAAQA.QA~BAAAAAABAA.QA";
"DBACOdM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAAAAA.YAAAAAAAAA~1---~BAAAAAAAAABA.Q~BAAAAABA.Q~BAAAABA~BAAAAEA.Q~BAAAAAQ~BAAAAAEA.Q~BAAAAABA~BAAAAABA.Q~BAAAAAABA.Q~BAAAAAQ.Q~BAAAAAABA.Q~BAAAAAQ.Q~BAAAAAQ.Q~BAAAAABA.Q~BAAAAAAAQ.Q~BAAAAAQ.Q";
GppModel gppModel = new GppModel(gppString);

Assertions.assertEquals(true, gppModel.hasSection(TcfEuV2.NAME));
Expand All @@ -428,12 +437,11 @@ public void testDecodeDefaultsAll() {
Assertions.assertEquals(true, gppModel.hasSection(UsNh.NAME));
Assertions.assertEquals(true, gppModel.hasSection(UsNj.NAME));
Assertions.assertEquals(true, gppModel.hasSection(UsTn.NAME));
Assertions.assertEquals(true, gppModel.hasSection(UsMn.NAME));
}

@Test
public void testDecodeUspv1() {
String gppString = "DBABTA~1YNN";
String gppString = "DBABT~1YNN";
GppModel gppModel = new GppModel(gppString);

Assertions.assertEquals(Arrays.asList(6), gppModel.getSectionIds());
Expand All @@ -456,7 +464,7 @@ public void testDecodeUspv1() {

@Test
public void testDecodeTcfEuV2() {
String gppString = "DBABMA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA";
String gppString = "DBABM~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA";
GppModel gppModel = new GppModel(gppString);

Assertions.assertEquals(Arrays.asList(2), gppModel.getSectionIds());
Expand Down Expand Up @@ -499,7 +507,7 @@ public void testDecodeTcfEuV2() {

@Test
public void testDecodeUspv1AndTcfEuV2() {
String gppString = "DBACNYA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~1YNN";
String gppString = "DBACNY~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~1YNN";
GppModel gppModel = new GppModel(gppString);

Assertions.assertEquals(Arrays.asList(2, 6), gppModel.getSectionIds());
Expand Down Expand Up @@ -564,7 +572,7 @@ public void testDecodeUspv1AndTcfEuV2() {
@Test
public void testDecodeUspv1AndTcfEuV2AndTcfCaV1() {
String gppString =
"DBACOeA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgABABAAABAB4AACACAAA.fHHHA4444ao~1YNN";
"DBACOe~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgABABAAABAB4AACACAA.fHHHA4444ao~1YNN";
GppModel gppModel = new GppModel(gppString);

Assertions.assertEquals(Arrays.asList(2, 5, 6), gppModel.getSectionIds());
Expand Down Expand Up @@ -650,7 +658,7 @@ public void testEncode1() {
gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.CREATED, utcDateTime);
gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.LAST_UPDATED, utcDateTime);

Assertions.assertEquals("DBABMA~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOAAAABAAAAA.QAAA.IAAA", gppModel.encode());
Assertions.assertEquals("DBABM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOAAAABAAAAA.QAAA.IAAA", gppModel.encode());
}

@Test
Expand All @@ -661,7 +669,7 @@ public void testEncode2() {
gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.CREATED, utcDateTime);
gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.LAST_UPDATED, utcDateTime);

Assertions.assertEquals("DBABMA~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOwAQAOgAAAA.QAAA.IAAA", gppModel.encode());
Assertions.assertEquals("DBABM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOwAQAOgAAAA.QAAA.IAAA", gppModel.encode());
}

@Test
Expand All @@ -672,25 +680,25 @@ public void testEncode3() {
gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.CREATED, utcDateTime);
gppModel.setFieldValue(TcfEuV2.NAME, TcfEuV2Field.LAST_UPDATED, utcDateTime);

Assertions.assertEquals("DBABMA~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAFpQAwAAgCtAWkAAAAAAA.QAAA.IAAA",
Assertions.assertEquals("DBABM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAFpQAwAAgCtAWkAAAAAAA.QAAA.IAAA",
gppModel.encode());
}

@Test
public void testDecode1() {
GppModel gppModel = new GppModel("DBABMA~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOAAAABAAAAA.QAAA.IAAA");
GppModel gppModel = new GppModel("DBABM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOAAAABAAAAA.QAAA.IAAA");
Assertions.assertEquals(Arrays.asList(28), gppModel.getFieldValue(TcfEuV2.NAME, TcfEuV2Field.VENDOR_CONSENTS));
}

@Test
public void testDecode2() {
GppModel gppModel = new GppModel("DBABMA~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOwAQAOgAAAA.QAAA.IAAA");
GppModel gppModel = new GppModel("DBABM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAAOwAQAOgAAAA.QAAA.IAAA");
Assertions.assertEquals(Arrays.asList(29), gppModel.getFieldValue(TcfEuV2.NAME, TcfEuV2Field.VENDOR_CONSENTS));
}

@Test
public void testDecode3() {
GppModel gppModel = new GppModel("DBABMA~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAFpQAwAAgCtAWkAAAAAAA.QAAA.IAAA");
GppModel gppModel = new GppModel("DBABM~CPSG_8APSG_8AAAAAAENAACAAAAAAAAAAAAAFpQAwAAgCtAWkAAAAAAA.QAAA.IAAA");
Assertions.assertEquals(Arrays.asList(1, 173, 722),
gppModel.getFieldValue(TcfEuV2.NAME, TcfEuV2Field.VENDOR_CONSENTS));
}
Expand Down Expand Up @@ -778,7 +786,7 @@ public void testNullConstructor() {
Assertions.assertEquals("DBAA", gppModel.encode());

gppModel.setFieldValue("uspv1", UspV1Field.NOTICE, 'Y');
Assertions.assertEquals("DBABTA~1Y--", gppModel.encode());
Assertions.assertEquals("DBABT~1Y--", gppModel.encode());
}

@Test
Expand All @@ -787,7 +795,7 @@ public void testEmptyStringConstructor() {
Assertions.assertEquals("DBAA", gppModel.encode());

gppModel.setFieldValue("uspv1", UspV1Field.NOTICE, 'Y');
Assertions.assertEquals("DBABTA~1Y--", gppModel.encode());
Assertions.assertEquals("DBABT~1Y--", gppModel.encode());
}

@Test
Expand All @@ -799,7 +807,7 @@ public void testDecodingNull() {
Assertions.assertEquals("DBAA", gppModel.encode());

gppModel.setFieldValue("uspv1", UspV1Field.NOTICE, 'Y');
Assertions.assertEquals("DBABTA~1Y--", gppModel.encode());
Assertions.assertEquals("DBABT~1Y--", gppModel.encode());
}

@Test
Expand All @@ -811,18 +819,7 @@ public void testDecodingEmptyString() {
Assertions.assertEquals("DBAA", gppModel.encode());

gppModel.setFieldValue("uspv1", UspV1Field.NOTICE, 'Y');
Assertions.assertEquals("DBABTA~1Y--", gppModel.encode());
}

@Test
public void testDecodingExceptionValidStringButNotGPP() {
try {
GppModel gppModel = new GppModel("DP48G0AP48G0AEsACCPLAkEgAAAAAEPgAB5YAAAQaQD2F2K2kKFkPCmQWYAQBCijYEAhQAAAAkCBIAAgAUgQAgFIIAgAIFAAAAAAAAAQEgCQAAQABAAAIACgAAAAAAIAAAAAAAQQAAAAAIAAAAAAAAEAAAAAAAQAAAAIAABEhCAAQQAEAAAAAAAQAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAgAA");
gppModel.getHeader().getName();
Assertions.fail("Expected LazyDecodingException");
} catch (DecodingException e) {

}
Assertions.assertEquals("DBABT~1Y--", gppModel.encode());
}


Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ public void testEncode1() {
public void testEncode2() {
HeaderV1 headerV1 = new HeaderV1();
headerV1.setFieldValue("SectionIds", Arrays.asList(2));
Assertions.assertEquals("DBABMA", headerV1.encode());
Assertions.assertEquals("DBABM", headerV1.encode());
}

@Test
public void testEncode3() {
HeaderV1 headerV1 = new HeaderV1();
headerV1.setFieldValue("SectionIds", Arrays.asList(2, 6));
Assertions.assertEquals("DBACNYA", headerV1.encode());
Assertions.assertEquals("DBACNY", headerV1.encode());
}

@Test
Expand All @@ -41,14 +41,32 @@ public void testDecode1() {
@Test
public void testDecode2() {
HeaderV1 headerV1 = new HeaderV1();
headerV1.decode("DBABMA");
headerV1.decode("DBABM");
Assertions.assertEquals(Arrays.asList(2), headerV1.getFieldValue("SectionIds"));
Assertions.assertEquals(headerV1.getFieldValue("Version"), headerV1.getVersion());
Assertions.assertEquals(headerV1.getFieldValue("SectionIds"), headerV1.getSectionsIds());
}

@Test
public void testDecode3() {
HeaderV1 headerV1 = new HeaderV1();
headerV1.decode("DBABMA");
Assertions.assertEquals(Arrays.asList(2), headerV1.getFieldValue("SectionIds"));
Assertions.assertEquals(headerV1.getFieldValue("Version"), headerV1.getVersion());
Assertions.assertEquals(headerV1.getFieldValue("SectionIds"), headerV1.getSectionsIds());
}

@Test
public void testDecode4() {
HeaderV1 headerV1 = new HeaderV1();
headerV1.decode("DBACNY");
Assertions.assertEquals(Arrays.asList(2, 6), headerV1.getFieldValue("SectionIds"));
Assertions.assertEquals(headerV1.getFieldValue("Version"), headerV1.getVersion());
Assertions.assertEquals(headerV1.getFieldValue("SectionIds"), headerV1.getSectionsIds());
}

@Test
public void testDecode5() {
HeaderV1 headerV1 = new HeaderV1();
headerV1.decode("DBACNYA");
Assertions.assertEquals(Arrays.asList(2, 6), headerV1.getFieldValue("SectionIds"));
Expand Down
Loading
Loading