Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions app/src/main/java/me/ghui/v2er/network/bean/DailyInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,22 @@ public boolean hadCheckedIn() {
}

public String getCheckinDays() {
if (Check.isEmpty(continuousLoginDayStr)) return "";

// Extract consecutive days from strings like:
// "您已连续登录 123 天"
// "ghui 已连续签到 12 天 2024/12/25"
// "用户161290已连续签到 5 天"

// Use regex to find number followed by "天" (days)
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)\\s*天");
java.util.regex.Matcher matcher = pattern.matcher(continuousLoginDayStr);

if (matcher.find()) {
return matcher.group(1);
}

// Fallback to extracting all digits if pattern not found
return Utils.extractDigits(continuousLoginDayStr);
}

Expand Down
69 changes: 69 additions & 0 deletions app/src/test/java/me/ghui/v2er/network/bean/DailyInfoTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package me.ghui.v2er.network.bean;

import org.junit.Test;
import static org.junit.Assert.*;

public class DailyInfoTest {

@Test
public void testGetCheckinDays_withValidFormat() {
// Test case 1: Standard format
DailyInfo dailyInfo = new DailyInfo();
dailyInfo.continuousLoginDayStr = "您已连续登录 123 天";
assertEquals("123", dailyInfo.getCheckinDays());
}

@Test
public void testGetCheckinDays_withDateInString() {
// Test case 2: String contains date and other numbers
DailyInfo dailyInfo = new DailyInfo();
// Simulate the actual problematic string that might appear
dailyInfo.continuousLoginDayStr = "ghui 已连续签到 12 天 2024/12/25";
String result = dailyInfo.getCheckinDays();
// After fix, it should correctly extract "12"
assertEquals("12", result);
}

@Test
public void testGetCheckinDays_withUserId() {
// Test case 3: String contains user ID and days
DailyInfo dailyInfo = new DailyInfo();
dailyInfo.continuousLoginDayStr = "用户161290已连续签到 5 天";
String result = dailyInfo.getCheckinDays();
// After fix, it should correctly extract "5"
assertEquals("5", result);
}

@Test
public void testGetCheckinDays_withNull() {
DailyInfo dailyInfo = new DailyInfo();
dailyInfo.continuousLoginDayStr = null;
assertEquals("", dailyInfo.getCheckinDays());
}

@Test
public void testGetCheckinDays_withEmpty() {
DailyInfo dailyInfo = new DailyInfo();
dailyInfo.continuousLoginDayStr = "";
assertEquals("", dailyInfo.getCheckinDays());
}

// Make continuousLoginDayStr accessible for testing
private static class DailyInfo extends me.ghui.v2er.network.bean.DailyInfo {
String continuousLoginDayStr;

@Override
public String getCheckinDays() {
// Use reflection to set the field for testing purposes
try {
java.lang.reflect.Field field = me.ghui.v2er.network.bean.DailyInfo.class.getDeclaredField("continuousLoginDayStr");
field.setAccessible(true);
field.set(this, continuousLoginDayStr);
} catch (NoSuchFieldException | IllegalAccessException e) {
// Fail the test explicitly if reflection fails
throw new RuntimeException("Failed to access continuousLoginDayStr via reflection: " + e.getMessage(), e);
}
return super.getCheckinDays();
}
}
}
Loading