header
Events API--get events

Tag:
Edit edit   Starstar

Program Information

Name: Events API--get events
Domain: web service and application
Functionality: This API manages a set of calendar geolocated events by user. The "get events" service returns a collection of events according to different criteria.
Input: id: An unique identifier of the event (Integer) id_creador: An unique identifier of the creator of the event (Integer) nombre: A short title for the event. (String) descripcion: A long description of the event. (String). nombre_creador: Name of the creator of the event. fecha_inicio: Starting date of the event. (String) fecha_fin: Ending date of the event. (String) tags: Comma separated list of tags for the event. (String) latitud: Latitude of the location where the event is taking place. (Double) longitud: Longitude of the location where the event is taking place. (Double)
Output: id: An unique identifier of the event (Integer) id_creador: An unique identifier of the creator of the event (Integer) nombre: A short title for the event. (String) descripcion: A long description of the event. (String). nombre_creador: Name of the creator of the event. fecha_inicio: Starting date of the event. (String) fecha_fin: Ending date of the event. (String) tags: Comma separated list of tags for the event. (String) latitud: Latitude of the location where the event is taking place. (Double) longitud: Longitude of the location where the event is taking place. (Double)

Reference

    Metamorphic Testing of RESTful Web APIs
    https://dx.doi.org/10.1109/TSE.2017.2764464  

MR Information

MR1------

Description:
Property: Get all the events. Then get the events tagged with a specific tag t. The output of the second invocation should be a subset of the output of the first invocation. For example, the first invocaiton is "to get all events", the second invocaiton is "to get the events tagged with 'hot'". The output of the second invocation should be a subset of the first one.
Source input: search criterion$A$: get all the events
Source output: a set of events $M$
Follow-up input: search criterion$A'$: get the events tagged with a specific tag $t$
Follow-up output: a set of events $N$
Input relation: $A' \subseteq A$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asysmetry, MRIP:

MR2------

Description:
Property: Get all the events tagged with a set of tags t1. Get all the events tagged with a set of tags t2 where t2 is a subset of t1. The output of the first invocation should be a subset of the output of the second invocation. For example, the first invocation is "to get the events tagged with 'API' and 'RESTful'". Then, the second invocaiton is "to get the events tagged with 'API'", the output of the first invocation should be a subset of the output of the second invocation.
Source input: criterion$A$: get the events tagged with a set of tags $t1$
Source output: a set of events $M$
Follow-up input: criterion$A'$: get the events tagged with a set of tags $t2$
Follow-up output: a set of events $N$
Input relation: $t2 \subseteq t1$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR3------

Description:
Property: Given a geographic position (latitude and longitude) P and two radii values in meters R1 , R2 where R1>R2. Get all the events in a radius R1 of P. Get all the events in a radius R2 of P. The output of the second invocation should be a subset of the output of the first invocation. For example, the first invocation is "to get events in 200$m^2$ around position $P$. Then, the second invocaiton is "to get events in 100$m^2$ around position $P$. The output of the second invocation should be a subset of the first invocaiton.
Source input: geographic position $P$ (latitude and longitude),a radii value in meters $R1$
Source output: a set of events $M$
Follow-up input: geographic position $P$ (latitude and longitude),a radii value in meters $R2$
Follow-up output: a set of events $N$
Input relation: $R1>R2$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR4------

Description:
Property: Given a geographic position (latitude and longitude) P and a radius value in meters R. Get all the events. Get all the events in a radius R of P. The output of the second invocation should be a subset of the output of the first invocation. For example, the first invocation is "to get all events". Then, the second invocation is "to get the events in 100$m^2$ around position $P$. The second invocaiton should be a subset of the first invocaiton.
Source input: geographic position $P$ (latitude and longitude),a radii value in meters $R$, criterion$A$: get the all events
Source output: a set of events $M$
Follow-up input: criterion$A'$: get all the events in a radius $R$ of $P$
Follow-up output: a set of events $N$
Input relation: $A'\subseteq A$
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR5------

Description:
Property: For any dates D1, D2 such than D2 is prior to D1. Get all the events after D1. Get all the events after D2. The output of the second invocation should be a subset of output of the first invocation. For example, the first invocaiton is "to get all the events after March 5th, 2018". Then, the second invocaiton is "to get all the events after March 5th, 2017. The output of the second invocaiton should be a subset of the first invocaiton.
Source input: search criterion: the events after date $D1$
Source output: a set of events $M$ after $D1$
Follow-up input: search criterion: the events after date $D2$
Follow-up output: a set of events $N$ after $D2$
Input relation: $D2$ is prior to $D1$
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR6------

Description:
Property: Given any date D and two integers I1,I2 such that I1>=I2. Get all the events after D and before I1 days (after D). Get all the events taking place between D and D+ I2 days. The output of the second invocation should be a subset of output of the first invocation. For example, the first invocation is "to get events after March 5th, 2019 and before 10 days. Then, the second invocaiton is "to get events after March 5th, 2019 and before 9 days. The output of the second invocaiton should be a subset of the first invocaiton.
Source input: to get events after $D$ and before $I1$ days, $I1$ donates an integer
Source output: a set of events $M$ after $D$ and before $I1$
Follow-up input: to get events after $D$ and before $I2$ days, $I2$ donates an integer
Follow-up output: a set of events $N$ after $D$ and before $I2$
Input relation: $I1 \geq I2$
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR7------

Description:
Property: For any two non-empty sets of tags t1 and t2 present in any pair of events e1 and e2 of the API such that t1 - t2 != 0. Get all the events, then get all the sets tagged with t1 - t2. The second invocation t1-t2 must be a subset strict of the output of the first invocation.
Source input: get all the events $A$
Source output: a set of events $M$
Follow-up input: two non-empty sets of tags $t1$ and $t2$ present in any pair of events $e1$ and $e2$ of the API such that $t1 - t2 != 0$, get all the sets of events $A'$ tagged with $t1 - t2$
Follow-up output: a set of events $N$
Input relation: $A' \subseteq A$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR8------

Description:
Property: Get all the event. For any event e1 in the output, get the set of events after the finishing date of e1. The output of the second invocation should be a subset string of the output of the first invocation.
Source input: get all the events $A$
Source output: a set of events $M$
Follow-up input: for any event $e1$ in the output, get the set of events $A'$ after the finishing date of $e1$
Follow-up output: a set of events $N$
Input relation: $A' \subseteq A$     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asysmetry

MR9------

Description:
Property: Get all the events. Given 2 events at different places E1 and E2 where d is the distance between such places. Get the events in a radius of d-1 from the position of E1. Then, get the events in a radius of d+1 from the position of E1. The output of the second invocations should be a strict subset of the output of the third invocation.
Source input: Given 2 events at different places $E1$ and $E2$ where $d$ is the distance between such places, input a radius of $d-1$ from the position of $E1$
Source output: a set of events $M$
Follow-up input: input a radius of $d+1$ from the position of $E1$
Follow-up output: a set of events $N$
Input relation: $(d+1)>(d-1)$     
Output relation: $M \subseteq N$
Pattern: MROP:subset, asymmetry

MR10------

Description:
Property: Get all the events by name using "" as parameter (returns all the events). Get the events by name using the name of any of the events present in the output of the first invocation. The output of the second invocation should be a subset of the output of the first invocation. For example, the first invocaiton is "to get all events", and one of the names presented in the output is "RESTful API". Then, the second invocaiton is "to get the events by name" and the name is "RESTful API". The output of the second invocation should be a subset of the output of the first invocation.
Source input: input "" as parameter
Source output: a set of events $M$
Follow-up input: input the name of any of the events present in the output of the first invocation as parameter
Follow-up output: a set of events $N$
Input relation:     
Output relation: $M \subseteq N$
Pattern: MROP:subset, MRP:asymmetry, MRIP:

MR11------

Description:
Property: Get all the events by creator name using "" as parameter (returns all the events). Get the events by creator name using the creator name of any of the events present in the output of the first invocation. The output of the second invocation should be a subset of the output of the first invocation.
Source input: input "" as parameter
Source output: a set of events $M$
Follow-up input: input the creator name of any of the events present in the output of the first invocation as parameter
Follow-up output: a set of events $N$
Input relation:     
Output relation: $M \subseteq N$
Pattern: MROP:subset, asymmetry

MR12------

Description:
Property: Get all the events using an empty string for date and duration as parameters. Given E1 and E2 present in the output of the first invocation with different starting and ending dates, such that E1.starting_date<E2.starting_date. Being d the number of days between such dates. Get the set of events form the starting date of E1 during d-1 days. The output of the second invocation is a strict subset of the output of the first invocation.
Source input: input "" as parameter
Source output: a set of events $M$
Follow-up input: Given $E1$ and $E2$ present in the output of the first invocation with different starting and ending dates, such that $E1.starting_date<E2.starting_date$. Being $d$ the number of days between such dates. input the starting date of $E1$ during $d-1$ days
Follow-up output: a set of events $N$
Input relation:     
Output relation: $N \subseteq M$
Pattern: MROP:subset, asymmetry
Insert title here