Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed issue where profiles were changing operation type on save #410

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

package ryey.easer.skills.operation.intent;

import static org.junit.Assert.assertEquals;

import android.os.Parcel;

import org.junit.Test;
Expand All @@ -27,21 +29,57 @@
import ryey.easer.plugin.PluginDataFormat;
import ryey.easer.skills.TestHelper;

import static org.junit.Assert.assertEquals;

public class IntentOperationDataTest {

@Test
public void testParcel() {
IntentOperationData dummyData = new IntentOperationDataFactory().dummyData();
public void testParcelActivity() {
IntentOperationData dummyData = new ActivityOperationDataFactory().dummyData();
Parcel parcel = TestHelper.writeToParcel(dummyData);
IntentOperationData parceledData = IntentOperationData.CREATOR.createFromParcel(parcel);
assertEquals(dummyData, parceledData);
}

@Test
public void testSerializeActivity() throws Exception {
ActivityOperationDataFactory factory = new ActivityOperationDataFactory();
IntentOperationData dummyData = factory.dummyData();
for (PluginDataFormat format : PluginDataFormat.values()) {
String serialized_data = dummyData.serialize(format);
IntentOperationData parsed_data = factory.parse(serialized_data, format, C.VERSION_CURRENT);
assertEquals(dummyData, parsed_data);
}
}

@Test
public void testParcelBroadcast() {
IntentOperationData dummyData = new BroadcastOperationDataFactory().dummyData();
Parcel parcel = TestHelper.writeToParcel(dummyData);
IntentOperationData parceledData = IntentOperationData.CREATOR.createFromParcel(parcel);
assertEquals(dummyData, parceledData);
}

@Test
public void testSerializeBroadcast() throws Exception {
BroadcastOperationDataFactory factory = new BroadcastOperationDataFactory();
IntentOperationData dummyData = factory.dummyData();
for (PluginDataFormat format : PluginDataFormat.values()) {
String serialized_data = dummyData.serialize(format);
IntentOperationData parsed_data = factory.parse(serialized_data, format, C.VERSION_CURRENT);
assertEquals(dummyData, parsed_data);
}
}

@Test
public void testParcelService() {
IntentOperationData dummyData = new ServiceOperationDataFactory().dummyData();
Parcel parcel = TestHelper.writeToParcel(dummyData);
IntentOperationData parceledData = IntentOperationData.CREATOR.createFromParcel(parcel);
assertEquals(dummyData, parceledData);
}

@Test
public void testSerialize() throws Exception {
IntentOperationDataFactory factory = new IntentOperationDataFactory();
public void testSerializeService() throws Exception {
ServiceOperationDataFactory factory = new ServiceOperationDataFactory();
IntentOperationData dummyData = factory.dummyData();
for (PluginDataFormat format : PluginDataFormat.values()) {
String serialized_data = dummyData.serialize(format);
Expand Down
7 changes: 3 additions & 4 deletions app/src/main/java/ryey/easer/skills/LocalSkillRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,13 @@
import ryey.easer.skills.operation.bluetooth.BluetoothOperationSkill;
import ryey.easer.skills.operation.bluetooth_connect.BluetoothConnectOperationSkill;
import ryey.easer.skills.operation.brightness.BrightnessOperationSkill;
import ryey.easer.skills.operation.intent.IntentOperationSkill;
import ryey.easer.skills.operation.cellular.CellularOperationSkill;
import ryey.easer.skills.operation.command.CommandOperationSkill;
import ryey.easer.skills.operation.hotspot.HotspotOperationSkill;
import ryey.easer.skills.operation.http_request.HttpRequestOperationSkill;
import ryey.easer.skills.operation.intent.operations.ActivityOperationSkill;
import ryey.easer.skills.operation.intent.operations.BroadcastOperationSkill;
import ryey.easer.skills.operation.intent.operations.ServiceOperationSkill;
import ryey.easer.skills.operation.intent.ActivityOperationSkill;
import ryey.easer.skills.operation.intent.BroadcastOperationSkill;
import ryey.easer.skills.operation.intent.ServiceOperationSkill;
import ryey.easer.skills.operation.launch_app.LaunchAppOperationSkill;
import ryey.easer.skills.operation.media_control.MediaControlOperationSkill;
import ryey.easer.skills.operation.network_transmission.NetworkTransmissionOperationSkill;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package ryey.easer.skills.operation.intent;

import android.content.Context;

import androidx.annotation.NonNull;

public class ActivityLoader extends IntentLoader<ActivityOperationData> {

public ActivityLoader(@NonNull Context context) {
super(context);
}

@Override
public void _load(@NonNull ActivityOperationData data, @NonNull OnResultCallback callback) {
context.startActivity(this.getIntent(data));
callback.onResult(true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ryey.easer.skills.operation.intent;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.IllegalStorageDataException;
import ryey.easer.commons.local_skill.dynamics.SolidDynamicsAssignment;
import ryey.easer.commons.local_skill.operationskill.OperationData;
import ryey.easer.plugin.PluginDataFormat;

public class ActivityOperationData extends IntentOperationData {
ActivityOperationData(IntentData data) {
super(data);
}

public ActivityOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException {
super(data, format, version);
}

@NonNull
@Override
public OperationData applyDynamics(SolidDynamicsAssignment dynamicsAssignment) {
return new ActivityOperationData(((IntentOperationData) super.applyDynamics(dynamicsAssignment)).data);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package ryey.easer.skills.operation.intent;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.IllegalStorageDataException;
import ryey.easer.commons.local_skill.operationskill.OperationDataFactory;
import ryey.easer.plugin.PluginDataFormat;

public class ActivityOperationDataFactory implements OperationDataFactory<ActivityOperationData> {
@NonNull
@Override
public Class<ActivityOperationData> dataClass() {
return ActivityOperationData.class;
}

@NonNull
@Override
public ActivityOperationData dummyData() {
return new ActivityOperationData(IntentOperationDataUtil.getDummyIntentData());
}

@NonNull
@Override
public ActivityOperationData parse(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException {
return new ActivityOperationData(data, format, version);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package ryey.easer.skills.operation.intent.operations;
package ryey.easer.skills.operation.intent;

import android.content.Context;

import androidx.annotation.NonNull;

import ryey.easer.R;
import ryey.easer.commons.local_skill.SkillView;
import ryey.easer.commons.local_skill.operationskill.OperationDataFactory;
import ryey.easer.skills.operation.OperationLoader;
import ryey.easer.skills.operation.intent.IntentOperationData;
import ryey.easer.skills.operation.intent.IntentOperationSkill;
import ryey.easer.skills.operation.intent.IntentSkillViewFragment;

public class ActivityOperationSkill extends IntentOperationSkill {
public class ActivityOperationSkill extends IntentOperationSkill<ActivityOperationData> {
@NonNull
@Override
public String id() {
Expand All @@ -26,17 +24,19 @@ public int name() {

@NonNull
@Override
public OperationLoader<IntentOperationData> loader(@NonNull Context context) {
public OperationLoader<ActivityOperationData> loader(@NonNull Context context) {
return new ActivityLoader(context);
}

@NonNull
@Override
public SkillView<IntentOperationData> view() {
return new DummyIntentSkillViewFragment();
public OperationDataFactory<ActivityOperationData> dataFactory() {
return new ActivityOperationDataFactory();
}

public static class DummyIntentSkillViewFragment extends IntentSkillViewFragment {

@NonNull
@Override
public SkillView<ActivityOperationData> view() {
return new ActivitySkillViewFragment();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ryey.easer.skills.operation.intent;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.InvalidDataInputException;

public class ActivitySkillViewFragment extends IntentSkillViewFragment<ActivityOperationData> {
@NonNull
@Override
public ActivityOperationData getData() throws InvalidDataInputException {
return new ActivityOperationData(super.getIntentData());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,21 @@
* along with Easer. If not, see <http://www.gnu.org/licenses/>.
*/

package ryey.easer.skills.operation.intent.operations;
package ryey.easer.skills.operation.intent;

import android.content.Context;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.ValidData;
import ryey.easer.skills.operation.intent.IntentLoader;
import ryey.easer.skills.operation.intent.IntentOperationData;

public class BroadcastLoader extends IntentLoader<IntentOperationData> {
public class BroadcastLoader extends IntentLoader<BroadcastOperationData> {
public BroadcastLoader(Context context) {
super(context);
}

@Override
public void _load(@ValidData @NonNull IntentOperationData data, @NonNull OnResultCallback callback) {

public void _load(@ValidData @NonNull BroadcastOperationData data, @NonNull OnResultCallback callback) {
context.sendBroadcast(this.getIntent(data));
callback.onResult(true);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ryey.easer.skills.operation.intent;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.IllegalStorageDataException;
import ryey.easer.commons.local_skill.dynamics.SolidDynamicsAssignment;
import ryey.easer.commons.local_skill.operationskill.OperationData;
import ryey.easer.plugin.PluginDataFormat;

public class BroadcastOperationData extends IntentOperationData {
BroadcastOperationData(IntentData data) {
super(data);
}

public BroadcastOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException {
super(data, format, version);
}

@NonNull
@Override
public OperationData applyDynamics(SolidDynamicsAssignment dynamicsAssignment) {
return new BroadcastOperationData(((IntentOperationData) super.applyDynamics(dynamicsAssignment)).data);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package ryey.easer.skills.operation.intent;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.IllegalStorageDataException;
import ryey.easer.commons.local_skill.operationskill.OperationDataFactory;
import ryey.easer.plugin.PluginDataFormat;

public class BroadcastOperationDataFactory implements OperationDataFactory<BroadcastOperationData> {

@NonNull
@Override
public Class<BroadcastOperationData> dataClass() {
return BroadcastOperationData.class;
}

@NonNull
@Override
public BroadcastOperationData dummyData() {
return new BroadcastOperationData(IntentOperationDataUtil.getDummyIntentData());
}

@NonNull
@Override
public BroadcastOperationData parse(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException {
return new BroadcastOperationData(data, format, version);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package ryey.easer.skills.operation.intent.operations;
package ryey.easer.skills.operation.intent;

import android.content.Context;

import androidx.annotation.NonNull;

import ryey.easer.R;
import ryey.easer.commons.local_skill.SkillView;
import ryey.easer.commons.local_skill.operationskill.OperationDataFactory;
import ryey.easer.skills.operation.OperationLoader;
import ryey.easer.skills.operation.intent.IntentOperationData;
import ryey.easer.skills.operation.intent.IntentOperationSkill;
import ryey.easer.skills.operation.intent.IntentSkillViewFragment;

public class BroadcastOperationSkill extends IntentOperationSkill {
public class BroadcastOperationSkill extends IntentOperationSkill<BroadcastOperationData> {
@NonNull
@Override
public String id() {
Expand All @@ -26,18 +24,20 @@ public int name() {

@NonNull
@Override
public OperationLoader<IntentOperationData> loader(@NonNull Context context) {
public OperationLoader<BroadcastOperationData> loader(@NonNull Context context) {
return new BroadcastLoader(context);
}

@NonNull
@Override
public SkillView<IntentOperationData> view() {
return new DummyIntentSkillViewFragment();
public OperationDataFactory<BroadcastOperationData> dataFactory() {
return new BroadcastOperationDataFactory();
}

public static class DummyIntentSkillViewFragment extends IntentSkillViewFragment
{

@NonNull
@Override
public SkillView<BroadcastOperationData> view() {
return new BroadcastSkillViewFragment();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ryey.easer.skills.operation.intent;

import androidx.annotation.NonNull;

import ryey.easer.commons.local_skill.InvalidDataInputException;

public class BroadcastSkillViewFragment extends IntentSkillViewFragment<BroadcastOperationData> {
@NonNull
@Override
public BroadcastOperationData getData() throws InvalidDataInputException {
return new BroadcastOperationData(super.getIntentData());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ public class IntentOperationData implements OperationData {
private static final String DATA = "data";
private static final String EXTRAS = "extras";

IntentData data = new IntentData();
protected IntentData data = new IntentData();

IntentOperationData(IntentData data) {
protected IntentOperationData(IntentData data) {
this.data = data;
}

IntentOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException {
protected IntentOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException {
parse(data, format, version);
}

Expand Down
Loading