From a5599dc67379b5d730f775b557c774f022cbf476 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 11 Jan 2026 14:20:55 +0100 Subject: [PATCH] Remove automatic barcode encoding type Migrates all automatic cards to ISO-8859-1 and uses that as default --- .../card_locker/BarcodeImageWriterTask.java | 27 +-- .../java/protect/card_locker/DBHelper.java | 155 +++++++++++++++++- .../protect/card_locker/ImportURIHelper.java | 6 +- .../java/protect/card_locker/LoyaltyCard.java | 17 +- .../card_locker/LoyaltyCardEditActivity.java | 11 +- .../card_locker/LoyaltyCardViewActivity.java | 1 - .../java/protect/card_locker/PkpassParser.kt | 7 +- .../importexport/CatimaExporter.java | 2 +- .../importexport/CatimaImporter.java | 4 +- .../importexport/FidmeImporter.java | 2 +- .../importexport/VoucherVaultImporter.java | 2 +- app/src/main/res/values-bg/strings.xml | 1 - app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-el-rGR/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-et/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - .../protect/card_locker/DatabaseTest.java | 30 ++-- .../protect/card_locker/ImportExportTest.java | 52 +++--- .../protect/card_locker/ImportURITest.java | 4 +- .../LoyaltyCardCursorAdapterTest.java | 21 +-- .../LoyaltyCardViewActivityTest.java | 119 +++++++------- .../protect/card_locker/MainActivityTest.java | 19 ++- .../java/protect/card_locker/PkpassTest.kt | 4 +- .../card_locker/ShortcutHelperTest.java | 9 +- .../java/protect/card_locker/TestHelpers.java | 3 +- 27 files changed, 303 insertions(+), 199 deletions(-) diff --git a/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java b/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java index 7f584e8bf..5329754ee 100644 --- a/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java +++ b/app/src/main/java/protect/card_locker/BarcodeImageWriterTask.java @@ -11,6 +11,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.zxing.EncodeHintType; @@ -58,7 +59,7 @@ public class BarcodeImageWriterTask implements CompatCallable { BarcodeImageWriterTask( Context context, ImageView imageView, String cardIdString, - CatimaBarcode barcodeFormat, @Nullable Charset barcodeEncoding, TextView textView, + CatimaBarcode barcodeFormat, @NonNull Charset barcodeEncoding, TextView textView, boolean showFallback, BarcodeImageWriterResultCallback callback, boolean roundCornerPadding, boolean isFullscreen ) { mContext = context; @@ -185,26 +186,6 @@ public class BarcodeImageWriterTask implements CompatCallable { MultiFormatWriter writer = new MultiFormatWriter(); Map encodeHints = new ArrayMap<>(); - Charset chosenEncoding = encoding; - // Use charset if defined or guess otherwise - if (chosenEncoding != null) { - Log.d(TAG, "Encoding explicitly set, " + chosenEncoding.name()); - } else { - // FIXME: Guessing encoding using zxing causes too many false positives and breaks the Deutschlandticket, a common public transport ticket in Germany - // See https://github.com/CatimaLoyalty/Android/issues/2932 - // - // So, for now, we just force ISO in the "guessing" path until we figure out a better way to guess - // The previous code is commented before, DO NOT UNCOMMENT, IT IS BROKEN - // - // chosenEncoding = Charset.forName(StringUtils.guessEncoding(cardId.getBytes(), new ArrayMap<>())); - // Log.d(TAG, "Guessed encoding: " + chosenEncoding.name()); - - // FIXME: Figure out a good way to automatically determine the best format to use, to not break UTF-8 barcodes - // However, make sure to NOT break the Deutschlandticket! - chosenEncoding = StandardCharsets.ISO_8859_1; - Log.w(TAG, "The encoding guessing code path is temporarily disabled due to it breaking Deutschlandticket. Forcing ISO-8859-1..."); - } - // We don't want to pass the ISO-8859-1 as an encoding hint as zxing may add this as ECI // inside the barcode. // @@ -218,9 +199,9 @@ public class BarcodeImageWriterTask implements CompatCallable { // cards without encode hints have never caused any issues (unless they were UTF-8), yet // just days after passing ISO-8859-1 as CHARACTER_SET in the encode hints already 2 // scan failures were reported (one for QR, one for Aztec). - if (!Objects.equals(chosenEncoding.name(), StandardCharsets.ISO_8859_1.name())) { + if (!Objects.equals(encoding.name(), StandardCharsets.ISO_8859_1.name())) { Log.d(TAG, "Chosen encoding is not ISO_8859_1, so passing as encoding hint"); - encodeHints.put(EncodeHintType.CHARACTER_SET, chosenEncoding); + encodeHints.put(EncodeHintType.CHARACTER_SET, encoding); } else { Log.d(TAG, "Not passing encoding as encoding hint"); } diff --git a/app/src/main/java/protect/card_locker/DBHelper.java b/app/src/main/java/protect/card_locker/DBHelper.java index 493e6f329..5f58c1a94 100644 --- a/app/src/main/java/protect/card_locker/DBHelper.java +++ b/app/src/main/java/protect/card_locker/DBHelper.java @@ -10,6 +10,7 @@ import android.database.sqlite.SQLiteOpenHelper; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.io.FileNotFoundException; @@ -26,7 +27,7 @@ import java.util.Set; public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "Catima.db"; public static final int ORIGINAL_DATABASE_VERSION = 1; - public static final int DATABASE_VERSION = 19; + public static final int DATABASE_VERSION = 20; // NB: changing these values requires a migration public static final int DEFAULT_ZOOM_LEVEL = 100; @@ -116,7 +117,7 @@ public class DBHelper extends SQLiteOpenHelper { LoyaltyCardDbIds.CARD_ID + " TEXT not null," + LoyaltyCardDbIds.BARCODE_ID + " TEXT," + LoyaltyCardDbIds.BARCODE_TYPE + " TEXT," + - LoyaltyCardDbIds.BARCODE_ENCODING + " TEXT," + + LoyaltyCardDbIds.BARCODE_ENCODING + " TEXT not null," + LoyaltyCardDbIds.STAR_STATUS + " INTEGER DEFAULT '0'," + LoyaltyCardDbIds.LAST_USED + " INTEGER DEFAULT '0', " + LoyaltyCardDbIds.ZOOM_LEVEL + " INTEGER DEFAULT '" + DEFAULT_ZOOM_LEVEL + "', " + @@ -356,6 +357,144 @@ public class DBHelper extends SQLiteOpenHelper { if (oldVersion < 19 && newVersion >= 19) { db.execSQL("UPDATE " + LoyaltyCardDbIds.TABLE + " SET " + LoyaltyCardDbIds.BARCODE_ENCODING + " = 'ISO-8859-1' WHERE " + LoyaltyCardDbIds.BARCODE_ENCODING + " IS NULL"); } + + if (oldVersion < 20 && newVersion >= 20) { + // SQLite doesn't support modify column + // So we need to create a temp column to make barcode encoding non-nullable + // https://www.sqlite.org/faq.html#q11 + db.beginTransaction(); + + // First migrate all cards to ISO-8859-1 + db.execSQL("UPDATE " + LoyaltyCardDbIds.TABLE + " SET " + LoyaltyCardDbIds.BARCODE_ENCODING + " = 'ISO-8859-1' WHERE " + LoyaltyCardDbIds.BARCODE_ENCODING + " IS NULL"); + + // create temp table + db.execSQL("CREATE TEMPORARY TABLE tmp (" + + LoyaltyCardDbIds.ID + " INTEGER primary key autoincrement," + + LoyaltyCardDbIds.STORE + " TEXT not null," + + LoyaltyCardDbIds.NOTE + " TEXT not null," + + LoyaltyCardDbIds.VALID_FROM + " INTEGER," + + LoyaltyCardDbIds.EXPIRY + " INTEGER," + + LoyaltyCardDbIds.BALANCE + " TEXT not null DEFAULT '0'," + + LoyaltyCardDbIds.BALANCE_TYPE + " TEXT," + + LoyaltyCardDbIds.HEADER_COLOR + " INTEGER," + + LoyaltyCardDbIds.CARD_ID + " TEXT not null," + + LoyaltyCardDbIds.BARCODE_ID + " TEXT," + + LoyaltyCardDbIds.BARCODE_TYPE + " TEXT," + + LoyaltyCardDbIds.BARCODE_ENCODING + " TEXT not null," + + LoyaltyCardDbIds.STAR_STATUS + " INTEGER DEFAULT '0'," + + LoyaltyCardDbIds.LAST_USED + " INTEGER DEFAULT '0', " + + LoyaltyCardDbIds.ZOOM_LEVEL + " INTEGER DEFAULT '" + DEFAULT_ZOOM_LEVEL + "', " + + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " INTEGER DEFAULT '" + DEFAULT_ZOOM_LEVEL_WIDTH + "', " + + LoyaltyCardDbIds.ARCHIVE_STATUS + " INTEGER DEFAULT '0' )"); + + // Insert all cards into temp table + db.execSQL("INSERT INTO tmp (" + + LoyaltyCardDbIds.ID + " ," + + LoyaltyCardDbIds.STORE + " ," + + LoyaltyCardDbIds.NOTE + " ," + + LoyaltyCardDbIds.VALID_FROM + " , " + + LoyaltyCardDbIds.EXPIRY + " ," + + LoyaltyCardDbIds.BALANCE + " ," + + LoyaltyCardDbIds.BALANCE_TYPE + " ," + + LoyaltyCardDbIds.HEADER_COLOR + " ," + + LoyaltyCardDbIds.CARD_ID + " ," + + LoyaltyCardDbIds.BARCODE_ID + " ," + + LoyaltyCardDbIds.BARCODE_TYPE + " ," + + LoyaltyCardDbIds.BARCODE_ENCODING + " ," + + LoyaltyCardDbIds.STAR_STATUS + " ," + + LoyaltyCardDbIds.LAST_USED + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " ," + + LoyaltyCardDbIds.ARCHIVE_STATUS + ")" + + " SELECT " + + LoyaltyCardDbIds.ID + " ," + + LoyaltyCardDbIds.STORE + " ," + + LoyaltyCardDbIds.NOTE + " ," + + LoyaltyCardDbIds.VALID_FROM + " ," + + LoyaltyCardDbIds.EXPIRY + " ," + + LoyaltyCardDbIds.BALANCE + " ," + + LoyaltyCardDbIds.BALANCE_TYPE + " ," + + LoyaltyCardDbIds.HEADER_COLOR + " ," + + LoyaltyCardDbIds.CARD_ID + " ," + + LoyaltyCardDbIds.BARCODE_ID + " ," + + LoyaltyCardDbIds.BARCODE_TYPE + " ," + + LoyaltyCardDbIds.BARCODE_ENCODING + " ," + + LoyaltyCardDbIds.STAR_STATUS + " ," + + LoyaltyCardDbIds.LAST_USED + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " ," + + LoyaltyCardDbIds.ARCHIVE_STATUS + + " FROM " + LoyaltyCardDbIds.TABLE); + + // Drop old table + db.execSQL("DROP TABLE " + LoyaltyCardDbIds.TABLE); + + // Create table again + db.execSQL("CREATE TABLE " + LoyaltyCardDbIds.TABLE + "(" + + LoyaltyCardDbIds.ID + " INTEGER primary key autoincrement," + + LoyaltyCardDbIds.STORE + " TEXT not null," + + LoyaltyCardDbIds.NOTE + " TEXT not null," + + LoyaltyCardDbIds.VALID_FROM + " INTEGER," + + LoyaltyCardDbIds.EXPIRY + " INTEGER," + + LoyaltyCardDbIds.BALANCE + " TEXT not null DEFAULT '0'," + + LoyaltyCardDbIds.BALANCE_TYPE + " TEXT," + + LoyaltyCardDbIds.HEADER_COLOR + " INTEGER," + + LoyaltyCardDbIds.CARD_ID + " TEXT not null," + + LoyaltyCardDbIds.BARCODE_ID + " TEXT," + + LoyaltyCardDbIds.BARCODE_TYPE + " TEXT," + + LoyaltyCardDbIds.BARCODE_ENCODING + " TEXT not null," + + LoyaltyCardDbIds.STAR_STATUS + " INTEGER DEFAULT '0'," + + LoyaltyCardDbIds.LAST_USED + " INTEGER DEFAULT '0', " + + LoyaltyCardDbIds.ZOOM_LEVEL + " INTEGER DEFAULT '" + DEFAULT_ZOOM_LEVEL + "', " + + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " INTEGER DEFAULT '" + DEFAULT_ZOOM_LEVEL_WIDTH + "', " + + LoyaltyCardDbIds.ARCHIVE_STATUS + " INTEGER DEFAULT '0' )"); + + // Insert all temp cards into newly created table + db.execSQL("INSERT INTO " + LoyaltyCardDbIds.TABLE + "(" + + LoyaltyCardDbIds.ID + " ," + + LoyaltyCardDbIds.STORE + " ," + + LoyaltyCardDbIds.NOTE + " ," + + LoyaltyCardDbIds.VALID_FROM + " , " + + LoyaltyCardDbIds.EXPIRY + " ," + + LoyaltyCardDbIds.BALANCE + " ," + + LoyaltyCardDbIds.BALANCE_TYPE + " ," + + LoyaltyCardDbIds.HEADER_COLOR + " ," + + LoyaltyCardDbIds.CARD_ID + " ," + + LoyaltyCardDbIds.BARCODE_ID + " ," + + LoyaltyCardDbIds.BARCODE_TYPE + " ," + + LoyaltyCardDbIds.BARCODE_ENCODING + " ," + + LoyaltyCardDbIds.STAR_STATUS + " ," + + LoyaltyCardDbIds.LAST_USED + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " ," + + LoyaltyCardDbIds.ARCHIVE_STATUS + ")" + + " SELECT " + + LoyaltyCardDbIds.ID + " ," + + LoyaltyCardDbIds.STORE + " ," + + LoyaltyCardDbIds.NOTE + " ," + + LoyaltyCardDbIds.VALID_FROM + " ," + + LoyaltyCardDbIds.EXPIRY + " ," + + LoyaltyCardDbIds.BALANCE + " ," + + LoyaltyCardDbIds.BALANCE_TYPE + " ," + + LoyaltyCardDbIds.HEADER_COLOR + " ," + + LoyaltyCardDbIds.CARD_ID + " ," + + LoyaltyCardDbIds.BARCODE_ID + " ," + + LoyaltyCardDbIds.BARCODE_TYPE + " ," + + LoyaltyCardDbIds.BARCODE_ENCODING + " ," + + LoyaltyCardDbIds.STAR_STATUS + " ," + + LoyaltyCardDbIds.LAST_USED + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL + " ," + + LoyaltyCardDbIds.ZOOM_LEVEL_WIDTH + " ," + + LoyaltyCardDbIds.ARCHIVE_STATUS + + " FROM tmp"); + + // Drop tmp table + db.execSQL("DROP TABLE tmp"); + + db.setTransactionSuccessful(); + db.endTransaction(); + } + } public static Set imageFiles(Context context, final SQLiteDatabase database) { @@ -417,7 +556,7 @@ public class DBHelper extends SQLiteOpenHelper { public static long insertLoyaltyCard( final SQLiteDatabase database, final String store, final String note, final Date validFrom, final Date expiry, final BigDecimal balance, final Currency balanceType, final String cardId, - final String barcodeId, final CatimaBarcode barcodeType, final @Nullable Charset barcodeEncoding, + final String barcodeId, final CatimaBarcode barcodeType, final @NonNull Charset barcodeEncoding, final Integer headerColor, final int starStatus, final Long lastUsed, final int archiveStatus) { database.beginTransaction(); @@ -433,7 +572,7 @@ public class DBHelper extends SQLiteOpenHelper { contentValues.put(LoyaltyCardDbIds.CARD_ID, cardId); contentValues.put(LoyaltyCardDbIds.BARCODE_ID, barcodeId); contentValues.put(LoyaltyCardDbIds.BARCODE_TYPE, barcodeType != null ? barcodeType.name() : null); - contentValues.put(LoyaltyCardDbIds.BARCODE_ENCODING, barcodeEncoding != null ? barcodeEncoding.name() : null); + contentValues.put(LoyaltyCardDbIds.BARCODE_ENCODING, barcodeEncoding.name()); contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor); contentValues.put(LoyaltyCardDbIds.STAR_STATUS, starStatus); contentValues.put(LoyaltyCardDbIds.LAST_USED, lastUsed != null ? lastUsed : Utils.getUnixTime()); @@ -453,7 +592,7 @@ public class DBHelper extends SQLiteOpenHelper { final SQLiteDatabase database, final int id, final String store, final String note, final Date validFrom, final Date expiry, final BigDecimal balance, final Currency balanceType, final String cardId, final String barcodeId, - final CatimaBarcode barcodeType, final @Nullable Charset barcodeEncoding, + final CatimaBarcode barcodeType, final @NonNull Charset barcodeEncoding, final Integer headerColor, final int starStatus, final Long lastUsed, final int archiveStatus) { database.beginTransaction(); @@ -470,7 +609,7 @@ public class DBHelper extends SQLiteOpenHelper { contentValues.put(LoyaltyCardDbIds.CARD_ID, cardId); contentValues.put(LoyaltyCardDbIds.BARCODE_ID, barcodeId); contentValues.put(LoyaltyCardDbIds.BARCODE_TYPE, barcodeType != null ? barcodeType.name() : null); - contentValues.put(LoyaltyCardDbIds.BARCODE_ENCODING, barcodeEncoding != null ? barcodeEncoding.name() : null); + contentValues.put(LoyaltyCardDbIds.BARCODE_ENCODING, barcodeEncoding.name()); contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor); contentValues.put(LoyaltyCardDbIds.STAR_STATUS, starStatus); contentValues.put(LoyaltyCardDbIds.LAST_USED, lastUsed != null ? lastUsed : Utils.getUnixTime()); @@ -490,7 +629,7 @@ public class DBHelper extends SQLiteOpenHelper { SQLiteDatabase database, final int id, final String store, final String note, final Date validFrom, final Date expiry, final BigDecimal balance, final Currency balanceType, final String cardId, final String barcodeId, - final CatimaBarcode barcodeType, final @Nullable Charset barcodeEncoding, + final CatimaBarcode barcodeType, final @NonNull Charset barcodeEncoding, final Integer headerColor, final int starStatus, final Long lastUsed, final int archiveStatus) { database.beginTransaction(); @@ -506,7 +645,7 @@ public class DBHelper extends SQLiteOpenHelper { contentValues.put(LoyaltyCardDbIds.CARD_ID, cardId); contentValues.put(LoyaltyCardDbIds.BARCODE_ID, barcodeId); contentValues.put(LoyaltyCardDbIds.BARCODE_TYPE, barcodeType != null ? barcodeType.name() : null); - contentValues.put(LoyaltyCardDbIds.BARCODE_ENCODING, barcodeEncoding != null ? barcodeEncoding.name() : null); + contentValues.put(LoyaltyCardDbIds.BARCODE_ENCODING, barcodeEncoding.name()); contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor); contentValues.put(LoyaltyCardDbIds.STAR_STATUS, starStatus); contentValues.put(LoyaltyCardDbIds.LAST_USED, lastUsed != null ? lastUsed : Utils.getUnixTime()); diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java index b0e8d37ac..076e6139d 100644 --- a/app/src/main/java/protect/card_locker/ImportURIHelper.java +++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java @@ -70,7 +70,7 @@ public class ImportURIHelper { try { // These values are allowed to be null CatimaBarcode barcodeType = null; - Charset barcodeEncoding = null; + Charset barcodeEncoding = StandardCharsets.ISO_8859_1; Date validFrom = null; Date expiry = null; BigDecimal balance = new BigDecimal("0"); @@ -206,9 +206,7 @@ public class ImportURIHelper { if (loyaltyCard.barcodeType != null) { fragment = appendFragment(fragment, BARCODE_TYPE, loyaltyCard.barcodeType.name()); } - if (loyaltyCard.barcodeEncoding != null) { - fragment = appendFragment(fragment, BARCODE_ENCODING, loyaltyCard.barcodeEncoding.name()); - } + fragment = appendFragment(fragment, BARCODE_ENCODING, loyaltyCard.barcodeEncoding.name()); if (loyaltyCard.headerColor != null) { fragment = appendFragment(fragment, HEADER_COLOR, loyaltyCard.headerColor.toString()); } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCard.java b/app/src/main/java/protect/card_locker/LoyaltyCard.java index 3a9318318..0ad6e6930 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCard.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCard.java @@ -10,6 +10,7 @@ import androidx.annotation.Nullable; import java.math.BigDecimal; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Currency; import java.util.Date; import java.util.List; @@ -31,7 +32,6 @@ public class LoyaltyCard { public String barcodeId; @Nullable public CatimaBarcode barcodeType; - @Nullable public Charset barcodeEncoding; @Nullable public Integer headerColor; @@ -94,7 +94,7 @@ public class LoyaltyCard { setCardId(""); setBarcodeId(null); setBarcodeType(null); - setBarcodeEncoding(null); + setBarcodeEncoding(StandardCharsets.ISO_8859_1); setHeaderColor(null); setStarStatus(0); setLastUsed(Utils.getUnixTime()); @@ -129,7 +129,7 @@ public class LoyaltyCard { public LoyaltyCard(final int id, final String store, final String note, @Nullable final Date validFrom, @Nullable final Date expiry, final BigDecimal balance, @Nullable final Currency balanceType, final String cardId, @Nullable final String barcodeId, @Nullable final CatimaBarcode barcodeType, - @Nullable final Charset barcodeEncoding, @Nullable final Integer headerColor, final int starStatus, + @NonNull final Charset barcodeEncoding, @Nullable final Integer headerColor, final int starStatus, final long lastUsed, final int zoomLevel, final int zoomLevelWidth, final int archiveStatus, @Nullable Bitmap imageThumbnail, @Nullable String imageThumbnailPath, @Nullable Bitmap imageFront, @Nullable String imageFrontPath, @@ -250,7 +250,7 @@ public class LoyaltyCard { this.barcodeType = barcodeType; } - public void setBarcodeEncoding(@Nullable Charset barcodeEncoding) { + public void setBarcodeEncoding(@NonNull Charset barcodeEncoding) { this.barcodeEncoding = barcodeEncoding; } @@ -478,7 +478,7 @@ public class LoyaltyCard { bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_TYPE, barcodeType != null ? barcodeType.name() : null); } if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_BARCODE_ENCODING)) { - bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_ENCODING, barcodeEncoding != null ? barcodeEncoding.name() : null); + bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_ENCODING, barcodeEncoding.name()); } if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_HEADER_COLOR)) { bundle.putInt(BUNDLE_LOYALTY_CARD_HEADER_COLOR, headerColor != null ? headerColor : -1); @@ -558,8 +558,7 @@ public class LoyaltyCard { int barcodeTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE); CatimaBarcode barcodeType = !cursor.isNull(barcodeTypeColumn) ? CatimaBarcode.fromName(cursor.getString(barcodeTypeColumn)) : null; // barcodeEncoding - int barcodeEncodingColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ENCODING); - Charset barcodeEncoding = !cursor.isNull(barcodeEncodingColumn) ? Charset.forName(cursor.getString(barcodeEncodingColumn)) : null; + Charset barcodeEncoding = Charset.forName(cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ENCODING))); // headerColor int headerColorColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR); Integer headerColor = !cursor.isNull(headerColorColumn) ? cursor.getInt(headerColorColumn) : null; @@ -615,7 +614,7 @@ public class LoyaltyCard { Utils.equals(a.barcodeId, b.barcodeId) && // nullable String Utils.equals(a.barcodeType == null ? null : a.barcodeType.format(), b.barcodeType == null ? null : b.barcodeType.format()) && // nullable CatimaBarcode with no overridden .equals(), so we need to check .format() - Utils.equals(a.barcodeEncoding, b.barcodeEncoding) && // nullable String + a.barcodeEncoding.name().equals(b.barcodeEncoding.name()) && // non-nullable String Utils.equals(a.headerColor, b.headerColor) && // nullable Integer a.starStatus == b.starStatus && // non-nullable int a.archiveStatus == b.archiveStatus && // non-nullable int @@ -655,7 +654,7 @@ public class LoyaltyCard { this.cardId, this.barcodeId, this.barcodeType != null ? this.barcodeType.format() : null, - this.barcodeEncoding != null ? this.barcodeEncoding.name() : null, + this.barcodeEncoding.name(), this.headerColor, this.starStatus, this.lastUsed, diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index b5d19f392..83fc94972 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -232,7 +232,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements viewModel.setHasChanged(true); } - protected void setLoyaltyCardBarcodeEncoding(@Nullable Charset barcodeEncoding) { + protected void setLoyaltyCardBarcodeEncoding(@NonNull Charset barcodeEncoding) { viewModel.getLoyaltyCard().setBarcodeEncoding(barcodeEncoding); generateBarcode(); @@ -594,18 +594,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements public void onTextChanged(CharSequence s, int start, int before, int count) { if (!s.toString().isEmpty()) { Log.d(TAG, "Setting barcode encoding to " + s.toString()); - if (s.toString().equals(getString(R.string.automatic))) { - setLoyaltyCardBarcodeEncoding(null); - } else { - setLoyaltyCardBarcodeEncoding(Charset.forName(s.toString())); - } + setLoyaltyCardBarcodeEncoding(Charset.forName(s.toString())); } } @Override public void afterTextChanged(Editable s) { ArrayList barcodeEncodingList = new ArrayList<>(); - barcodeEncodingList.add(getString(R.string.automatic)); barcodeEncodingList.add(StandardCharsets.ISO_8859_1.name()); barcodeEncodingList.add(StandardCharsets.UTF_8.name()); ArrayAdapter barcodeEncodingAdapter = new ArrayAdapter<>(LoyaltyCardEditActivity.this, android.R.layout.select_dialog_item, barcodeEncodingList); @@ -810,7 +805,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements CatimaBarcode barcodeType = viewModel.getLoyaltyCard().barcodeType; barcodeTypeField.setText(barcodeType != null ? barcodeType.prettyName() : getString(R.string.noBarcode)); Charset barcodeEncoding = viewModel.getLoyaltyCard().barcodeEncoding; - barcodeEncodingField.setText(barcodeEncoding != null ? barcodeEncoding.name() : getString(R.string.automatic)); + barcodeEncodingField.setText(barcodeEncoding.name()); // We set the balance here (with onResuming/onRestoring == true) to prevent formatBalanceCurrencyField() from setting it (via onTextChanged), // which can cause issues when switching locale because it parses the balance and e.g. the decimal separator may have changed. diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index 466ddeaea..9ff22dc66 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -89,7 +89,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements String cardIdString; String barcodeIdString; CatimaBarcode format; - @Nullable Charset barcodeEncoding; Bitmap frontImageBitmap; diff --git a/app/src/main/java/protect/card_locker/PkpassParser.kt b/app/src/main/java/protect/card_locker/PkpassParser.kt index b1638aadd..27f006f71 100644 --- a/app/src/main/java/protect/card_locker/PkpassParser.kt +++ b/app/src/main/java/protect/card_locker/PkpassParser.kt @@ -15,6 +15,7 @@ import java.io.FileNotFoundException import java.io.IOException import java.math.BigDecimal import java.nio.charset.Charset +import java.nio.charset.StandardCharsets import java.text.DateFormat import java.text.ParseException import java.time.ZonedDateTime @@ -41,7 +42,7 @@ class PkpassParser(context: Context, uri: Uri?) { private var cardId: String = context.getString(R.string.noBarcode) private var barcodeId: String? = null private var barcodeType: CatimaBarcode? = null - private var barcodeEncoding: Charset? = null + private var barcodeEncoding: Charset = StandardCharsets.ISO_8859_1 private var headerColor: Int? = null private val starStatus = 0 private val lastUsed: Long = 0 @@ -348,13 +349,13 @@ class PkpassParser(context: Context, uri: Uri?) { try { cardId = barcodeInfo.getString("altText") barcodeId = barcodeInfo.getString("message") - barcodeEncoding = Charset.forName(barcodeInfo.getString("messageEncoding")) } catch (ignored: JSONException) { cardId = barcodeInfo.getString("message") barcodeId = null - barcodeEncoding = Charset.forName(barcodeInfo.getString("messageEncoding")) } + barcodeEncoding = Charset.forName(barcodeInfo.getString("messageEncoding")) + // Don't set barcodeId if it's the same as cardId if (cardId == barcodeId) { barcodeId = null diff --git a/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java b/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java index a311dd191..508426c06 100644 --- a/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java +++ b/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java @@ -155,7 +155,7 @@ public class CatimaExporter implements Exporter { card.cardId, card.barcodeId, card.barcodeType != null ? card.barcodeType.name() : "", - card.barcodeEncoding != null ? card.barcodeEncoding.name() : "", + card.barcodeEncoding.name(), card.headerColor, card.starStatus, card.lastUsed, diff --git a/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java b/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java index b819ab858..524183ca8 100644 --- a/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java @@ -462,8 +462,8 @@ public class CatimaImporter implements Importer { // Barcode encoding information is only supported since Catima 2.41.0, so old exports will lack this field // Database migration 19 forcing ISO-8859-1 on all cards, so we should treat imports from old Catima versions the same and force ISO-8859-1 there too // This limits the risk of breaking cards when importing an old database backup - Charset barcodeEncoding = null; - String unparsedBarcodeEncoding = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BARCODE_ENCODING, record, "ISO-8859-1"); + Charset barcodeEncoding = StandardCharsets.ISO_8859_1; + String unparsedBarcodeEncoding = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BARCODE_ENCODING, record, ""); if (!unparsedBarcodeEncoding.isEmpty()) { barcodeEncoding = Charset.forName(unparsedBarcodeEncoding); } diff --git a/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java b/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java index 4e61875e1..802cd84b6 100644 --- a/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java @@ -160,7 +160,7 @@ public class FidmeImporter implements Importer { cardId, null, barcodeType, - null, + StandardCharsets.ISO_8859_1, headerColor, starStatus, Utils.getUnixTime(), diff --git a/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java b/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java index 2eaecd9f7..2292a26cf 100644 --- a/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java @@ -162,7 +162,7 @@ public class VoucherVaultImporter implements Importer { cardId, null, barcodeType, - null, + StandardCharsets.ISO_8859_1, headerColor, 0, Utils.getUnixTime(), diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 97469da48..66f76b440 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -300,6 +300,5 @@ Копирано Няма стойност Назад - Автоматично Кодиране на щрихкода diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index ebbf99a70..51c62ef93 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -306,6 +306,5 @@ Zkopírováno do schránky Nenalezena žádná hodnota Kódování čárového kódu - Automatické Zpět diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5aac88ca1..e9f34bfc9 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -300,6 +300,5 @@ In die Zwischenablage kopiert Keinen Betrag gefunden Barcode-Kodierung - Automatisch Zurück diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index ad141c17b..af1081825 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -299,7 +299,6 @@ Αντιγραφή τιμής Αντιγράφηκε στο πρόχειρο Δεν βρέθηκε τιμή - Αυτόματη Κωδικοποίηση γραμμωτού κώδικα Πίσω diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c00d905c3..cd3f36a29 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -306,6 +306,5 @@ Copiado al portapapeles Ningún valor encontrado Codificación de barra de código - Automático Atrás diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index bd776f33e..eda361bbc 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -300,6 +300,5 @@ Kopeeritud lõikelauale Ühtegi väärtust ei leidu Triipkoodi kodeerimine - Automaatne Tagasi diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32911802f..d6f8d93c5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -344,6 +344,5 @@ Copied to clipboard No value found Barcode encoding - Automatic Back diff --git a/app/src/test/java/protect/card_locker/DatabaseTest.java b/app/src/test/java/protect/card_locker/DatabaseTest.java index 5314cccef..2a2373524 100644 --- a/app/src/test/java/protect/card_locker/DatabaseTest.java +++ b/app/src/test/java/protect/card_locker/DatabaseTest.java @@ -42,7 +42,7 @@ public class DatabaseTest { @Test public void addRemoveOneGiftCard() { assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -58,7 +58,7 @@ public class DatabaseTest { assertEquals("cardId", loyaltyCard.cardId); assertEquals(null, loyaltyCard.barcodeId); assertEquals(BarcodeFormat.UPC_A, loyaltyCard.barcodeType.format()); - assertEquals(null, loyaltyCard.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, loyaltyCard.barcodeEncoding); assertEquals(DEFAULT_HEADER_COLOR, loyaltyCard.headerColor); assertEquals(0, loyaltyCard.starStatus); assertEquals(0, loyaltyCard.archiveStatus); @@ -71,7 +71,7 @@ public class DatabaseTest { @Test public void updateGiftCard() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -99,7 +99,7 @@ public class DatabaseTest { @Test public void updateGiftCardOnlyStar() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -119,7 +119,7 @@ public class DatabaseTest { assertEquals("cardId", loyaltyCard.cardId); assertEquals(null, loyaltyCard.barcodeId); assertEquals(BarcodeFormat.UPC_A, loyaltyCard.barcodeType.format()); - assertEquals(null, loyaltyCard.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, loyaltyCard.barcodeEncoding); assertEquals(DEFAULT_HEADER_COLOR, loyaltyCard.headerColor); assertEquals(1, loyaltyCard.starStatus); assertEquals(0, loyaltyCard.archiveStatus); @@ -130,14 +130,14 @@ public class DatabaseTest { assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); boolean result = DBHelper.updateLoyaltyCard(mDatabase, 1, "store1", "note1", null, null, new BigDecimal("0"), null, "cardId1", - null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null, 0); + null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null, 0); assertEquals(false, result); assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); } @Test public void emptyGiftCardValues() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "", "", null, null, new BigDecimal("0"), null, "", null, null, null, null, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "", "", null, null, new BigDecimal("0"), null, "", null, null, StandardCharsets.ISO_8859_1, null, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -153,7 +153,7 @@ public class DatabaseTest { assertEquals("", loyaltyCard.cardId); assertEquals(null, loyaltyCard.barcodeId); assertEquals(null, loyaltyCard.barcodeType); - assertEquals(null, loyaltyCard.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, loyaltyCard.barcodeEncoding); // headerColor is randomly generated when not given, so skip assertEquals(0, loyaltyCard.starStatus); assertEquals(0, loyaltyCard.archiveStatus); @@ -214,10 +214,10 @@ public class DatabaseTest { for (int index = CARDS_TO_ADD - 1; index >= 0; index--) { if (index == CARDS_TO_ADD - 1) { id = DBHelper.insertLoyaltyCard(mDatabase, "store" + index, "note" + index, null, null, new BigDecimal("0"), null, "cardId" + index, - null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, index, 1, null,0); + null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, index, 1, null,0); } else { id = DBHelper.insertLoyaltyCard(mDatabase, "store" + index, "note" + index, null, null, new BigDecimal("0"), null, "cardId" + index, - null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, index, 0, null,0); + null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, index, 0, null,0); } boolean result = (id != -1); assertTrue(result); @@ -241,7 +241,7 @@ public class DatabaseTest { assertEquals("cardId" + index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID))); assertEquals(null, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ID))); assertEquals(BarcodeFormat.UPC_A.toString(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE))); - assertEquals(null, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ENCODING))); + assertEquals(StandardCharsets.ISO_8859_1.name(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ENCODING))); assertEquals(index, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR))); assertEquals(1, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS))); @@ -317,7 +317,7 @@ public class DatabaseTest { public void updateGroup() { // Create card assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -429,7 +429,7 @@ public class DatabaseTest { public void cardAddAndRemoveGroups() { // Create card assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -525,7 +525,7 @@ public class DatabaseTest { @Test public void updateGiftCardOnlyBalance() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, DEFAULT_HEADER_COLOR, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -545,7 +545,7 @@ public class DatabaseTest { assertEquals("cardId", loyaltyCard.cardId); assertEquals(null, loyaltyCard.barcodeId); assertEquals(BarcodeFormat.UPC_A, loyaltyCard.barcodeType.format()); - assertEquals(null, loyaltyCard.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, loyaltyCard.barcodeEncoding); assertEquals(DEFAULT_HEADER_COLOR, loyaltyCard.headerColor); assertEquals(0, loyaltyCard.starStatus); assertEquals(0, loyaltyCard.archiveStatus); diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index 9f01f517b..2510739d2 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -74,7 +74,7 @@ public class ImportExportTest { for (int index = cardsToAdd; index > 4; index--) { String storeName = String.format("store, \"%4d", index); String note = String.format("note, \"%4d", index); - long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, null, index, 1, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, index, 1, null,0); boolean result = (id != -1); assertTrue(result); } @@ -82,7 +82,7 @@ public class ImportExportTest { String storeName = String.format("store, \"%4d", index); String note = String.format("note, \"%4d", index); //if index is even - long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, null, index, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, index, 0, null,0); boolean result = (id != -1); assertTrue(result); } @@ -91,7 +91,7 @@ public class ImportExportTest { @Test public void addLoyaltyCardsWithExpiryNeverPastTodayFuture() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "No Expiry", "", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, "No Expiry", "", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, 0, 0, null,0); boolean result = (id != -1); assertTrue(result); @@ -105,11 +105,11 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(0), card.headerColor); assertEquals(0, card.starStatus); - id = DBHelper.insertLoyaltyCard(mDatabase, "Past", "", null, new Date((long) 1), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, 0, null,0); + id = DBHelper.insertLoyaltyCard(mDatabase, "Past", "", null, new Date((long) 1), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, 0, 0, null,0); result = (id != -1); assertTrue(result); @@ -123,11 +123,11 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(0), card.headerColor); assertEquals(0, card.starStatus); - id = DBHelper.insertLoyaltyCard(mDatabase, "Today", "", null, new Date(), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, 0, null,0); + id = DBHelper.insertLoyaltyCard(mDatabase, "Today", "", null, new Date(), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, 0, 0, null,0); result = (id != -1); assertTrue(result); @@ -142,13 +142,13 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(0), card.headerColor); assertEquals(0, card.starStatus); // This will break after 19 January 2038 // If someone is still maintaining this code base by then: I love you - id = DBHelper.insertLoyaltyCard(mDatabase, "Future", "", null, new Date(2147483648000L), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, 0, null,0); + id = DBHelper.insertLoyaltyCard(mDatabase, "Future", "", null, new Date(2147483648000L), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, 0, 0, null,0); result = (id != -1); assertTrue(result); @@ -162,7 +162,7 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(0), card.headerColor); assertEquals(0, card.starStatus); @@ -193,7 +193,7 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(index), card.headerColor); assertEquals(0, card.starStatus); @@ -225,7 +225,7 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(index), card.headerColor); assertEquals(0, card.starStatus); } @@ -257,7 +257,7 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(index), card.headerColor); assertEquals(1, card.starStatus); @@ -280,7 +280,7 @@ public class ImportExportTest { assertEquals(BARCODE_DATA, card.cardId); assertEquals(null, card.barcodeId); assertEquals(BARCODE_TYPE.format(), card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Integer.valueOf(index), card.headerColor); assertEquals(0, card.starStatus); @@ -859,7 +859,7 @@ public class ImportExportTest { loyaltyCardIconImages.put(loyaltyCardId, bitmap1); // Create card 2 - loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 2", "", null, null, new BigDecimal(0), null, "123456", null, null, null, 2, 1, null,0); + loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 2", "", null, null, new BigDecimal(0), null, "123456", null, null, StandardCharsets.ISO_8859_1, 2, 1, null,0); loyaltyCardHashMap.put(loyaltyCardId, DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, loyaltyCardId)); // Export everything @@ -977,7 +977,7 @@ public class ImportExportTest { assertEquals("1234", card1.cardId); assertEquals("5432", card1.barcodeId); assertEquals(BarcodeFormat.QR_CODE, card1.barcodeType.format()); - assertEquals(null, card1.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card1.barcodeEncoding); assertEquals(1, (long) card1.headerColor); assertEquals(0, card1.starStatus); assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, ImageLocationType.front)); @@ -995,7 +995,7 @@ public class ImportExportTest { assertEquals("a", card8.cardId); assertEquals(null, card8.barcodeId); assertEquals(null, card8.barcodeType); - assertEquals(null, card8.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card8.barcodeEncoding); assertEquals(-5317, (long) card8.headerColor); assertEquals(0, card8.starStatus); assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, ImageLocationType.front)); @@ -1013,7 +1013,7 @@ public class ImportExportTest { assertEquals("A", card2.cardId); assertEquals(null, card2.barcodeId); assertEquals(null, card2.barcodeType); - assertEquals(null, card2.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card2.barcodeEncoding); assertEquals(-9977996, (long) card2.headerColor); assertEquals(0, card2.starStatus); assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, ImageLocationType.front)); @@ -1031,7 +1031,7 @@ public class ImportExportTest { assertEquals("dhd", card3.cardId); assertEquals(null, card3.barcodeId); assertEquals(null, card3.barcodeType); - assertEquals(null, card3.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card3.barcodeEncoding); assertEquals(-9977996, (long) card3.headerColor); assertEquals(0, card3.starStatus); assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, ImageLocationType.front)); @@ -1049,7 +1049,7 @@ public class ImportExportTest { assertEquals("dhshsvshs", card4.cardId); assertEquals(null, card4.barcodeId); assertEquals(null, card4.barcodeType); - assertEquals(null, card4.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card4.barcodeEncoding); assertEquals(-10902850, (long) card4.headerColor); assertEquals(1, card4.starStatus); assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, ImageLocationType.front)); @@ -1085,7 +1085,7 @@ public class ImportExportTest { assertEquals("a", card6.cardId); assertEquals("-5317", card6.barcodeId); assertEquals(BarcodeFormat.AZTEC, card6.barcodeType.format()); - assertEquals(null, card6.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card6.barcodeEncoding); assertEquals(null, card6.headerColor); assertEquals(0, card6.starStatus); assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card6.id, ImageLocationType.front)); @@ -1133,7 +1133,7 @@ public class ImportExportTest { assertEquals("82825292629272726", card.cardId); assertEquals(null, card.barcodeId); assertEquals(null, card.barcodeType); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(0, card.starStatus); card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 2); @@ -1147,7 +1147,7 @@ public class ImportExportTest { assertEquals("123456", card.cardId); assertEquals(null, card.barcodeId); assertEquals(null, card.barcodeType); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(0, card.starStatus); card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 3); @@ -1161,7 +1161,7 @@ public class ImportExportTest { assertEquals("123435363634", card.cardId); assertEquals(null, card.barcodeId); assertEquals(null, card.barcodeType); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(0, card.starStatus); TestHelpers.getEmptyDb(activity); @@ -1187,7 +1187,7 @@ public class ImportExportTest { assertEquals("123456", card.cardId); assertEquals(null, card.barcodeId); assertEquals(BarcodeFormat.CODE_128, card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Color.GRAY, (long) card.headerColor); assertEquals(0, card.starStatus); @@ -1202,7 +1202,7 @@ public class ImportExportTest { assertEquals("26846363", card.cardId); assertEquals(null, card.barcodeId); assertEquals(BarcodeFormat.CODE_39, card.barcodeType.format()); - assertEquals(null, card.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, card.barcodeEncoding); assertEquals(Color.rgb(128, 0, 128), (long) card.headerColor); assertEquals(0, card.starStatus); diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java index 370373ee7..25e5985e4 100644 --- a/app/src/test/java/protect/card_locker/ImportURITest.java +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -73,7 +73,7 @@ public class ImportURITest { @Test public void ensureNoCrashOnMissingHeaderFields() throws InvalidObjectException, UnsupportedEncodingException { // Generate card - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("EUR"), BarcodeFormat.UPC_A.toString(), null, CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), null, null, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("EUR"), BarcodeFormat.UPC_A.toString(), null, CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), StandardCharsets.ISO_8859_1, null, 0, null,0); // Get card LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); @@ -187,7 +187,7 @@ public class ImportURITest { assertEquals("12345", parsedCard.cardId); assertEquals(null, parsedCard.barcodeId); assertEquals(BarcodeFormat.ITF, parsedCard.barcodeType.format()); - assertEquals(null, parsedCard.barcodeEncoding); + assertEquals(StandardCharsets.ISO_8859_1, parsedCard.barcodeEncoding); assertEquals(Integer.valueOf(-416706), parsedCard.headerColor); assertEquals(0, parsedCard.starStatus); } diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java index 05a4745dd..ded7b4eb1 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java @@ -25,6 +25,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.shadows.ShadowLog; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.Currency; @RunWith(RobolectricTestRunner.class) @@ -96,7 +97,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapterEmptyNote() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -111,7 +112,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapterWithNote() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -126,10 +127,10 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapterStarring() { - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeA", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,1)); - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeB", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 1, null,1)); - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeC", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0)); - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeD", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 1, null,0)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeA", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,1)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeB", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 1, null,1)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeC", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeD", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 1, null,0)); assertEquals(4, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -177,7 +178,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter0Points() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -192,7 +193,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter0EUR() { - DBHelper.insertLoyaltyCard(mDatabase,"store", "", null, null, new BigDecimal("0"), Currency.getInstance("EUR"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase,"store", "", null, null, new BigDecimal("0"), Currency.getInstance("EUR"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -207,7 +208,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter100Points() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -222,7 +223,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter10USD() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("USD"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("USD"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index 94644f9f9..0b7cbf9a8 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -213,12 +213,7 @@ public class LoyaltyCardViewActivityTest { assertEquals(CatimaBarcode.fromName(barcodeType).format(), card.barcodeType.format()); } - // The special "Automatic" string shouldn't actually be written to the loyalty card - if (barcodeEncoding.equals(activity.getApplicationContext().getString(R.string.automatic))) { - assertEquals(null, card.barcodeEncoding); - } else { - assertEquals(Charset.forName(barcodeEncoding), card.barcodeEncoding); - } + assertEquals(Charset.forName(barcodeEncoding), card.barcodeEncoding); assertNotNull(card.headerColor); @@ -374,7 +369,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); // Check default settings - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); } @Test @@ -409,7 +404,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); // Check default settings - checkAllFields(activity, newCard ? ViewMode.ADD_CARD : ViewMode.UPDATE_CARD, newCard ? "" : "store", newCard ? "" : "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), newCard ? "" : EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), newCard ? context.getString(R.string.noBarcode) : EAN_BARCODE_TYPE.prettyName(), newCard ? context.getString(R.string.automatic) : StandardCharsets.UTF_8.name(), null, null); + checkAllFields(activity, newCard ? ViewMode.ADD_CARD : ViewMode.UPDATE_CARD, newCard ? "" : "store", newCard ? "" : "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), newCard ? "" : EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), newCard ? context.getString(R.string.noBarcode) : EAN_BARCODE_TYPE.prettyName(), newCard ? "ISO-8859-1" : "UTF-8", null, null); // Change everything final EditText storeField = activity.findViewById(R.id.storeNameEdit); @@ -488,7 +483,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); final Context context = activity.getApplicationContext(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); } @Test @@ -548,18 +543,18 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); final Context context = activity.getApplicationContext(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); // Complete barcode capture successfully captureBarcodeWithResult(activity, true); activityController.resume(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); shadowOf(getMainLooper()).idle(); // Save and check the loyalty card - saveLoyaltyCardWithArguments(activity, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), new BigDecimal("0"), context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.name(), context.getString(R.string.automatic), true); + saveLoyaltyCardWithArguments(activity, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), new BigDecimal("0"), context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.name(), "ISO-8859-1", true); } @Test @@ -572,7 +567,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); final Context context = activity.getApplicationContext(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); // Complete barcode capture in failure captureBarcodeWithResult(activity, false); @@ -580,7 +575,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); } @Test @@ -593,13 +588,13 @@ public class LoyaltyCardViewActivityTest { LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get(); final Context context = activity.getApplicationContext(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); // Complete barcode capture successfully captureBarcodeWithResult(activity, true); activityController.resume(); - checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Cancel the loyalty card creation assertEquals(false, activity.isFinishing()); @@ -644,7 +639,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -653,7 +648,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @@ -707,7 +702,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get(); @@ -716,13 +711,13 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Complete barcode capture successfully captureBarcodeWithResult(activity, true); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Cancel the loyalty card creation assertEquals(false, activity.isFinishing()); @@ -746,7 +741,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -755,7 +750,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Set date to today MaterialAutoCompleteTextView expiryField = activity.findViewById(R.id.expiryField); @@ -769,17 +764,17 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @Test - public void startWithLoyaltyCardExpirySetNoExpiry() throws IOException { + public void startWithLoyaltyCardExpirySetNoExpiry() { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, new Date(), new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, new Date(), new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -788,13 +783,13 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Set date to never MaterialAutoCompleteTextView expiryField = activity.findViewById(R.id.expiryField); expiryField.setText(expiryField.getAdapter().getItem(0).toString(), false); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @@ -804,7 +799,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -813,7 +808,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Set balance to 10 points EditText balanceField = activity.findViewById(R.id.balanceField); @@ -842,7 +837,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), "10.00", "€", EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE.toString(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), DateFormat.getDateInstance(DateFormat.LONG).format(new Date()), "10.00", "€", EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE.toString(), "ISO-8859-1", null, null); database.close(); } @@ -855,7 +850,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("USD"), EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("USD"), EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -864,7 +859,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "10.00", "$", EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "10.00", "$", EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); shadowOf(getMainLooper()).idle(); @@ -886,7 +881,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", "₩", EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", "₩", EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @@ -896,7 +891,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -905,7 +900,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Change barcode ID EditText barcodeField = activity.findViewById(R.id.barcodeIdField); @@ -918,7 +913,7 @@ public class LoyaltyCardViewActivityTest { AlertDialog updateBarcodeIdDialog = (AlertDialog) (ShadowDialog.getLatestDialog()); assertNull(updateBarcodeIdDialog); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @@ -928,7 +923,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -937,7 +932,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Change card ID EditText cardIdField = activity.findViewById(R.id.cardIdView); @@ -952,7 +947,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "123456", context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "123456", context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @@ -962,7 +957,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -971,7 +966,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Change card ID EditText cardIdField = activity.findViewById(R.id.cardIdView); @@ -989,7 +984,7 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "654321", context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "654321", context.getString(R.string.sameAsCardId), EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @@ -999,7 +994,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1008,7 +1003,7 @@ public class LoyaltyCardViewActivityTest { activityController.visible(); activityController.resume(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Change card ID EditText cardIdField = activity.findViewById(R.id.cardIdView); @@ -1026,17 +1021,17 @@ public class LoyaltyCardViewActivityTest { shadowOf(getMainLooper()).idle(); - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "654321", "123456", EAN_BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "654321", "123456", EAN_BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); database.close(); } @Test - public void checkMenu() throws IOException { + public void checkMenu() { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(false, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1081,7 +1076,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(false, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1102,7 +1097,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, null, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, null, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(false, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1123,7 +1118,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, null, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, null, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1133,7 +1128,7 @@ public class LoyaltyCardViewActivityTest { activityController.resume(); // Save and check the loyalty card - saveLoyaltyCardWithArguments(activity, "store", "note", activity.getApplicationContext().getString(R.string.anyDate), activity.getApplicationContext().getString(R.string.never), new BigDecimal("0"), activity.getApplicationContext().getString(R.string.points), BARCODE_DATA, activity.getApplicationContext().getString(R.string.sameAsCardId), BARCODE_TYPE.name(), activity.getApplicationContext().getString(R.string.automatic), false); + saveLoyaltyCardWithArguments(activity, "store", "note", activity.getApplicationContext().getString(R.string.anyDate), activity.getApplicationContext().getString(R.string.never), new BigDecimal("0"), activity.getApplicationContext().getString(R.string.points), BARCODE_DATA, activity.getApplicationContext().getString(R.string.sameAsCardId), BARCODE_TYPE.name(), "ISO-8859-1", false); database.close(); } @@ -1143,7 +1138,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, null, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, null, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1153,7 +1148,7 @@ public class LoyaltyCardViewActivityTest { activityController.resume(); // Save and check the loyalty card - saveLoyaltyCardWithArguments(activity, "store", "note", activity.getApplicationContext().getString(R.string.anyDate), activity.getApplicationContext().getString(R.string.never), new BigDecimal("0"), activity.getApplicationContext().getString(R.string.points), BARCODE_DATA, activity.getApplicationContext().getString(R.string.sameAsCardId), activity.getApplicationContext().getString(R.string.noBarcode), activity.getApplicationContext().getString(R.string.automatic), false); + saveLoyaltyCardWithArguments(activity, "store", "note", activity.getApplicationContext().getString(R.string.anyDate), activity.getApplicationContext().getString(R.string.never), new BigDecimal("0"), activity.getApplicationContext().getString(R.string.points), BARCODE_DATA, activity.getApplicationContext().getString(R.string.sameAsCardId), activity.getApplicationContext().getString(R.string.noBarcode), "ISO-8859-1", false); database.close(); } @@ -1163,7 +1158,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(true, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1173,18 +1168,18 @@ public class LoyaltyCardViewActivityTest { activityController.resume(); // First check if the card is as expected - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), BARCODE_TYPE.prettyName(), "ISO-8859-1", null, null); // Complete empty barcode selection successfully selectBarcodeWithResult(activity, BARCODE_DATA, null, true); activityController.resume(); // Check if the barcode type is NO_BARCODE as expected - checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", null, null); assertEquals(View.GONE, activity.findViewById(R.id.barcodeLayout).getVisibility()); // Check if the special NO_BARCODE string doesn't get saved - saveLoyaltyCardWithArguments(activity, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), new BigDecimal("0"), context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), context.getString(R.string.automatic), false); + saveLoyaltyCardWithArguments(activity, "store", "note", context.getString(R.string.anyDate), context.getString(R.string.never), new BigDecimal("0"), context.getString(R.string.points), BARCODE_DATA, context.getString(R.string.sameAsCardId), context.getString(R.string.noBarcode), "ISO-8859-1", false); database.close(); } @@ -1194,7 +1189,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(false, (int) cardId); Activity activity = (Activity) activityController.get(); @@ -1231,7 +1226,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(false, (int) cardId); AppCompatActivity activity = (AppCompatActivity) activityController.get(); @@ -1327,7 +1322,7 @@ public class LoyaltyCardViewActivityTest { final Context context = ApplicationProvider.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(context).getWritableDatabase(); - long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, null, null, Color.BLACK, 0, null, 0); + long cardId = DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, BARCODE_DATA, null, null, StandardCharsets.ISO_8859_1, Color.BLACK, 0, null, 0); ActivityController activityController = createActivityWithLoyaltyCard(false, (int) cardId); AppCompatActivity activity = (AppCompatActivity) activityController.get(); @@ -1402,7 +1397,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); final Context context = activity.getApplicationContext(); - checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "123456", context.getString(R.string.sameAsCardId), "Aztec", context.getString(R.string.automatic), null, null); + checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", context.getString(R.string.anyDate), context.getString(R.string.never), "0", context.getString(R.string.points), "123456", context.getString(R.string.sameAsCardId), "Aztec", "ISO-8859-1", null, null); assertEquals(-416706, ((ColorDrawable) activity.findViewById(R.id.thumbnail).getBackground()).getColor()); } } diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java index 3b1ad9b0c..754360f21 100644 --- a/app/src/test/java/protect/card_locker/MainActivityTest.java +++ b/app/src/test/java/protect/card_locker/MainActivityTest.java @@ -32,6 +32,7 @@ import org.robolectric.android.controller.ActivityController; import org.robolectric.shadows.ShadowActivity; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -97,7 +98,7 @@ public class MainActivityTest { assertEquals(0, list.getAdapter().getItemCount()); SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); assertEquals(View.VISIBLE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); @@ -132,10 +133,10 @@ public class MainActivityTest { assertEquals(0, list.getAdapter().getItemCount()); SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "storeB", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); - DBHelper.insertLoyaltyCard(database, "storeA", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); - DBHelper.insertLoyaltyCard(database, "storeD", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 1, null,0); - DBHelper.insertLoyaltyCard(database, "storeC", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 1, null,0); + DBHelper.insertLoyaltyCard(database, "storeB", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "storeA", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "storeD", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 1, null,0); + DBHelper.insertLoyaltyCard(database, "storeC", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 1, null,0); assertEquals(View.VISIBLE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); @@ -229,8 +230,8 @@ public class MainActivityTest { TabLayout groupTabs = mainActivity.findViewById(R.id.groups); SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "The First Store", "Initial note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); - DBHelper.insertLoyaltyCard(database, "The Second Store", "Secondary note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "The First Store", "Initial note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "The Second Store", "Secondary note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); DBHelper.insertGroup(database, "Group one"); List groups = new ArrayList<>(); @@ -485,8 +486,8 @@ public class MainActivityTest { SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "The First Store", "Initial note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); - DBHelper.insertLoyaltyCard(database, "The Second Store", "Secondary note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "The First Store", "Initial note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "The Second Store", "Secondary note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, null,0); String finalQuery = "store"; assert mSearchView != null; diff --git a/app/src/test/java/protect/card_locker/PkpassTest.kt b/app/src/test/java/protect/card_locker/PkpassTest.kt index a6d16f8fe..010e1bb6c 100644 --- a/app/src/test/java/protect/card_locker/PkpassTest.kt +++ b/app/src/test/java/protect/card_locker/PkpassTest.kt @@ -492,7 +492,7 @@ class PkpassTest { Assert.assertEquals("No barcode", parsedCard.cardId) Assert.assertEquals(null, parsedCard.barcodeId) Assert.assertEquals(null, parsedCard.barcodeType) - Assert.assertEquals(null, parsedCard.barcodeEncoding) + Assert.assertEquals(StandardCharsets.ISO_8859_1, parsedCard.barcodeEncoding) Assert.assertEquals(Color.parseColor("#FFFFFF"), parsedCard.headerColor) Assert.assertEquals(0, parsedCard.starStatus) Assert.assertEquals(0, parsedCard.archiveStatus) @@ -559,7 +559,7 @@ class PkpassTest { Assert.assertEquals("No barcode", parsedCard.cardId) Assert.assertEquals(null, parsedCard.barcodeId) Assert.assertEquals(null, parsedCard.barcodeType) - Assert.assertEquals(null, parsedCard.barcodeEncoding) + Assert.assertEquals(StandardCharsets.ISO_8859_1, parsedCard.barcodeEncoding) Assert.assertEquals(Color.parseColor("#FFFFFF"), parsedCard.headerColor) Assert.assertEquals(0, parsedCard.starStatus) Assert.assertEquals(0, parsedCard.archiveStatus) diff --git a/app/src/test/java/protect/card_locker/ShortcutHelperTest.java b/app/src/test/java/protect/card_locker/ShortcutHelperTest.java index 14cbdc7e3..79e12f7d5 100644 --- a/app/src/test/java/protect/card_locker/ShortcutHelperTest.java +++ b/app/src/test/java/protect/card_locker/ShortcutHelperTest.java @@ -21,6 +21,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.android.controller.ActivityController; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.Comparator; @RunWith(RobolectricTestRunner.class) @@ -38,10 +39,10 @@ public class ShortcutHelperTest { mDatabase = TestHelpers.getEmptyDb(mActivity).getWritableDatabase(); long now = System.currentTimeMillis(); - id1 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store1", "note1", null, null, new BigDecimal("0"), null, "cardId1", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, now,0); - id2 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store2", "note2", null, null, new BigDecimal("0"), null, "cardId2", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, now + 10,0); - id3 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store3", "note3", null, null, new BigDecimal("0"), null, "cardId3", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, now + 20,0); - id4 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store4", "note4", null, null, new BigDecimal("0"), null, "cardId4", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), null, Color.BLACK, 0, now + 30,0); + id1 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store1", "note1", null, null, new BigDecimal("0"), null, "cardId1", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, now,0); + id2 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store2", "note2", null, null, new BigDecimal("0"), null, "cardId2", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, now + 10,0); + id3 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store3", "note3", null, null, new BigDecimal("0"), null, "cardId3", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, now + 20,0); + id4 = (int) DBHelper.insertLoyaltyCard(mDatabase, "store4", "note4", null, null, new BigDecimal("0"), null, "cardId4", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), StandardCharsets.ISO_8859_1, Color.BLACK, 0, now + 30,0); ShortcutHelper.maxShortcuts = 3; } diff --git a/app/src/test/java/protect/card_locker/TestHelpers.java b/app/src/test/java/protect/card_locker/TestHelpers.java index b2185d668..084b04752 100644 --- a/app/src/test/java/protect/card_locker/TestHelpers.java +++ b/app/src/test/java/protect/card_locker/TestHelpers.java @@ -11,6 +11,7 @@ import com.google.zxing.BarcodeFormat; import java.io.FileNotFoundException; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; public class TestHelpers { private static final String BARCODE_DATA = "428311627547"; @@ -55,7 +56,7 @@ public class TestHelpers { for (int index = cardsToAdd; index > 0; index--) { String storeName = String.format("store, \"%4d", index); String note = String.format("note, \"%4d", index); - long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, null, index, 0, null,0); + long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, StandardCharsets.ISO_8859_1, index, 0, null,0); boolean result = (id != -1); assertTrue(result); }